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))); }