Esempio n. 1
0
 public SessionController(
     ILoggerFactory loggerFactory,
     IUserRepository userRepository,
     ICtfConfigurationLoader ctfConfigurationLoader,
     UserPreviewRepository userPreviewRepository,
     OAuthProviderSelector oAuthSelector,
     JwtHandler jwt,
     ActionTokenPairHandler actionTokenPairHandler,
     PasswordHandler pwdHandler,
     IOAuthStateRepository oAuthStateRepository,
     IMfaStateRepository mfaStateRepository,
     LoginSettingsRepository loginSettingsRepository,
     MfaValidatorService mfaValidator,
     IMfaRepository mfaRepository)
     : base(loggerFactory, userRepository, userPreviewRepository, ctfConfigurationLoader)
 {
     this.OAuthSelector           = oAuthSelector;
     this.Jwt                     = jwt;
     this.ActionTokenPairHandler  = actionTokenPairHandler;
     this.Password                = pwdHandler;
     this.OAuthStateRepository    = oAuthStateRepository;
     this.MfaStateRepository      = mfaStateRepository;
     this.LoginSettingsRepository = loginSettingsRepository;
     this.MfaValidator            = mfaValidator;
     this.MfaRepository           = mfaRepository;
 }
        /// <summary>
        /// Creates a new setting repository.
        /// </summary>
        /// <param name="cfg">OAuth configuration.</param>
        /// <param name="oAuthProviderSelector">Provider selector.</param>
        public LoginSettingsRepository(
            IOptions <ConfigurationAuthentication> cfg,
            OAuthProviderSelector oAuthProviderSelector)
        {
            var config    = cfg.Value;
            var providers = config.OAuth.Enable
                ? config.OAuth.Providers.Select(x => ProviderToPreview(x, oAuthProviderSelector))
                : null;

            this.LoginSettings = new LoginSettingsPreview(config.LocalLogin, config.OAuth.Enable, providers);
        }
 /// <summary>
 /// Gets redacted versions of account connections.
 /// </summary>
 /// <param name="externalUsers">External users to transform.</param>
 /// <returns>An enumerable of abridged connections.</returns>
 public IEnumerable <ExternalAccountPreview> GetConnections(IEnumerable <IExternalUser> externalUsers, OAuthProviderSelector oAuthProviderSelector)
 => externalUsers.Select(x => new ExternalAccountPreview(x, oAuthProviderSelector.GetById(x.ProviderId))).ToList();
        private static LoginProviderPreview ProviderToPreview(ConfigurationOAuthProvider provider, OAuthProviderSelector selector)
        {
            var id  = provider.Id ?? provider.Type;
            var prv = selector.GetById(id);

            return(new LoginProviderPreview(id, prv.GetName(id), prv.GetColour(id)));
        }