using Nop.Core.Domain.Customers; using Nop.Services.Customers; using Nop.Services.Plugins; namespace Nop.Services.Authentication.MultiFactor; /// /// Represents an multi-factor authentication plugin manager implementation /// public partial class MultiFactorAuthenticationPluginManager : PluginManager, IMultiFactorAuthenticationPluginManager { #region Fields protected readonly MultiFactorAuthenticationSettings _multiFactorAuthenticationSettings; #endregion #region Ctor public MultiFactorAuthenticationPluginManager(MultiFactorAuthenticationSettings multiFactorAuthenticationSettings, ICustomerService customerService, IPluginService pluginService) : base(customerService, pluginService) { _multiFactorAuthenticationSettings = multiFactorAuthenticationSettings; } #endregion #region Methods /// /// Check is active multi-factor authentication methods /// /// Filter by customer; pass null to load all plugins /// Filter by store; pass 0 to load all plugins /// /// A task that represents the asynchronous operation /// The task result contains true if we have active multi-factor authentication methods /// public virtual async Task HasActivePluginsAsync(Customer customer = null, int storeId = 0) { return (await LoadActivePluginsAsync(_multiFactorAuthenticationSettings.ActiveAuthenticationMethodSystemNames, customer, storeId)).Any(); } /// /// Load active multi-factor authentication methods /// /// Filter by customer; pass null to load all plugins /// Filter by store; pass 0 to load all plugins /// /// A task that represents the asynchronous operation /// The task result contains the list of active multi-factor authentication methods /// public virtual async Task> LoadActivePluginsAsync(Customer customer = null, int storeId = 0) { return await LoadActivePluginsAsync(_multiFactorAuthenticationSettings.ActiveAuthenticationMethodSystemNames, customer, storeId); } /// /// Check whether the passed multi-factor authentication method is active /// /// Authentication method to check /// Result public virtual bool IsPluginActive(IMultiFactorAuthenticationMethod authenticationMethod) { return IsPluginActive(authenticationMethod, _multiFactorAuthenticationSettings.ActiveAuthenticationMethodSystemNames); } /// /// Check whether the multi-factor authentication method with the passed system name is active /// /// System name of authentication method to check /// Filter by customer; pass null to load all plugins /// Filter by store; pass 0 to load all plugins /// /// A task that represents the asynchronous operation /// The task result contains the result /// public virtual async Task IsPluginActiveAsync(string systemName, Customer customer = null, int storeId = 0) { var authenticationMethod = await LoadPluginBySystemNameAsync(systemName, customer, storeId); return IsPluginActive(authenticationMethod); } #endregion }