Example #1
0
        public CredentialsService(
            UserManager <AppUserEntity> userManager,
            IEmailService emailService,
            ILoginService loginService,
            IIdentityUIUserInfoService identityUIUserInfoService,
            IValidator <RecoverPasswordRequest> forgotPasswordValidator,
            IValidator <ResetPasswordRequest> recoverPasswordValidator,
            IValidator <ChangePasswordRequest> changePasswordValidator,
            IValidator <CreatePasswordRequest> createPasswordValidator,
            ILogger <CredentialsService> logger,
            IOptionsSnapshot <IdentityUIOptions> identityManagementOptions,
            IOptionsSnapshot <IdentityUIEndpoints> identityManagementEndpoints)
        {
            _userManager = userManager;

            _emailService = emailService;
            _loginService = loginService;

            _identityUIUserInfoService = identityUIUserInfoService;

            _forgotPasswordValidator  = forgotPasswordValidator;
            _recoverPasswordValidator = recoverPasswordValidator;
            _changePasswordValidator  = changePasswordValidator;
            _createPasswordValidator  = createPasswordValidator;

            _logger = logger;

            _identityManagementOptions   = identityManagementOptions.Value;
            _identityManagementEndpoints = identityManagementEndpoints.Value;
        }
Example #2
0
        public InviteService(
            IBaseDAO <AppUserEntity> userDAO,
            IBaseDAO <RoleEntity> roleDAO,
            IBaseDAO <InviteEntity> inviteDAO,
            IGroupStore groupStore,
            IGroupUserStore groupUserStore,
            IEmailService mailService,
            IAddInviteFilter addInviteFilter,
            IValidator <InviteToGroupRequest> inviteToGroupRequestValidator,
            IValidator <InviteRequest> inviteRequestValidator,
            ILogger <InviteService> logger,
            IOptions <IdentityUIOptions> identityManagementOptions,
            IOptions <IdentityUIEndpoints> identityManagementEndpoints)
        {
            _userDAO   = userDAO;
            _roleDAO   = roleDAO;
            _inviteDAO = inviteDAO;

            _groupStore      = groupStore;
            _groupUserStore  = groupUserStore;
            _mailService     = mailService;
            _addInviteFilter = addInviteFilter;

            _inviteToGroupRequestValidator = inviteToGroupRequestValidator;
            _inviteRequestValidator        = inviteRequestValidator;

            _logger = logger;

            _identityManagementOptions   = identityManagementOptions.Value;
            _identityManagementEndpoints = identityManagementEndpoints.Value;
        }
        public ExternalLoginService(
            SignInManager <AppUserEntity> signInManager,
            UserManager <AppUserEntity> userManager,
            IIdentityUIUserInfoService identityUIUserInfoService,
            ISessionService sessionService,
            ILoginFilter canLoginService,
            IOptions <IdentityUIOptions> identityUIOptions,
            IOptions <IdentityUIEndpoints> identityUIEndpoints,
            IValidator <ExternalLoginRequest> externalLoginRequestValidator,
            ILogger <ExternalLoginService> logger)
        {
            _signInManager = signInManager;
            _userManager   = userManager;

            _identityUIUserInfoService = identityUIUserInfoService;
            _sessionService            = sessionService;
            _canLoginService           = canLoginService;

            _identityUIOptions   = identityUIOptions.Value;
            _identityUIEndpoints = identityUIEndpoints.Value;

            _externalLoginRequestValidator = externalLoginRequestValidator;

            _logger = logger;
        }
 public ProfileImageService(IBaseRepositoryAsync <UserImageEntity> userImageRepository, IMemoryCache memoryCache,
                            IOptions <IdentityUIOptions> identityUIOptions, ILogger <ProfileImageService> logger)
 {
     _userImageRepository = userImageRepository;
     _memoryCache         = memoryCache;
     _identityUIOptions   = identityUIOptions.Value;
     _logger = logger;
 }
        public EmailConfirmationService(UserManager <AppUserEntity> userManager, ILogger <EmailConfirmationService> logger, IEmailService emailService,
                                        IOptionsSnapshot <IdentityUIOptions> identityManagementOptions, IOptionsSnapshot <IdentityUIEndpoints> identityManagementEndpoints)
        {
            _userManager = userManager;

            _emailService = emailService;

            _logger = logger;

            _identityManagementOptions   = identityManagementOptions.Value;
            _identityManagementEndpoints = identityManagementEndpoints.Value;
        }
        public ProfileImageService(
            IBaseDAO <UserImageEntity> userImageDAO,
            IMemoryCache memoryCache,
            IDefaultProfileImageService defaultProfileImageService,
            IOptions <IdentityUIOptions> identityUIOptions,
            ILogger <ProfileImageService> logger)
        {
            _userImageDAO = userImageDAO;

            _memoryCache = memoryCache;
            _defaultProfileImageService = defaultProfileImageService;

            _identityUIOptions = identityUIOptions.Value;

            _logger = logger;
        }
Example #7
0
        public InviteService(IBaseRepository <AppUserEntity> userRepository, IBaseRepository <InviteEntity> inviteRepository,
                             IBaseRepository <RoleEntity> roleRepository, IGroupStore groupStore, IGroupUserStore groupUserStore, IEmailService mailService,
                             IValidator <InviteToGroupRequest> inviteToGroupRequestValidator, IValidator <InviteRequest> inviteRequestValidator,
                             ILogger <InviteService> logger, IOptionsSnapshot <IdentityUIOptions> identityManagementOptions,
                             IOptionsSnapshot <IdentityUIEndpoints> identityManagementEndpoints)
        {
            _userRepository   = userRepository;
            _inviteRepository = inviteRepository;
            _roleRepository   = roleRepository;

            _groupStore     = groupStore;
            _groupUserStore = groupUserStore;

            _mailService = mailService;

            _inviteToGroupRequestValidator = inviteToGroupRequestValidator;
            _inviteRequestValidator        = inviteRequestValidator;

            _logger = logger;

            _identityManagementOptions   = identityManagementOptions.Value;
            _identityManagementEndpoints = identityManagementEndpoints.Value;
        }
Example #8
0
        /// <summary>
        /// Configures IdentityUI
        /// </summary>
        /// <param name="services"></param>
        /// <param name="configuration"></param>
        /// <param name="endpointAction"></param>
        /// <returns></returns>
        public static IdentityUIServicesBuilder ConfigureIdentityUI(this IServiceCollection services, IConfiguration configuration,
                                                                    Action <IdentityUIEndpoints> endpointAction)
        {
            IdentityUIOptions identityUIOptions = configuration.GetSection("IdentityUI").Get <IdentityUIOptions>();

            if (identityUIOptions == null)
            {
                identityUIOptions = new IdentityUIOptions();
            }

            services.Configure <IdentityUIOptions>(options =>
            {
                options.BasePath    = identityUIOptions.BasePath;
                options.Database    = identityUIOptions.Database;
                options.EmailSender = identityUIOptions.EmailSender;
            });

            services.Configure <DatabaseOptions>(options =>
            {
                options.Type             = identityUIOptions.Database?.Type ?? DatabaseTypes.InMemory;
                options.ConnectionString = identityUIOptions.Database?.ConnectionString;
            });

            services.Configure <EmailSenderOptions>(options =>
            {
                options.Ip         = identityUIOptions.EmailSender?.Ip;
                options.Port       = identityUIOptions.EmailSender?.Port ?? -1;
                options.UserName   = identityUIOptions.EmailSender?.UserName;
                options.Password   = identityUIOptions.EmailSender?.Password;
                options.SenderName = identityUIOptions.EmailSender?.SenderName;
            });

            IdentityUIEndpoints identityManagementEndpoints = new IdentityUIEndpoints();

            endpointAction?.Invoke(identityManagementEndpoints);

            if (!identityManagementEndpoints.UseEmailSender.HasValue)
            {
                if (identityUIOptions.EmailSender == null || string.IsNullOrEmpty(identityUIOptions.EmailSender.Ip))
                {
                    identityManagementEndpoints.UseEmailSender = false;
                }
                else
                {
                    identityManagementEndpoints.UseEmailSender = true;
                }
            }

            services.Configure <IdentityUIEndpoints>(options =>
            {
                options.Home = identityManagementEndpoints.Home;

                options.Login        = identityManagementEndpoints.Login;
                options.Logout       = identityManagementEndpoints.Logout;
                options.AccessDenied = identityManagementEndpoints.AccessDenied;

                options.Manage = identityManagementEndpoints.Manage;

                options.ConfirmeEmail = identityManagementEndpoints.ConfirmeEmail;
                options.ResetPassword = identityManagementEndpoints.ResetPassword;
                options.AcceptInvite  = identityManagementEndpoints.AcceptInvite;

                options.RegisterEnabled        = identityManagementEndpoints.RegisterEnabled;
                options.UseEmailSender         = identityManagementEndpoints.UseEmailSender;
                options.UseSmsGateway          = identityManagementEndpoints.UseSmsGateway;
                options.InviteValidForTimeSpan = identityManagementEndpoints.InviteValidForTimeSpan;
            });

            IdentityUIServicesBuilder builder = new IdentityUIServicesBuilder(services, identityManagementEndpoints);

            builder.Services.AddScoped <IEmailSender, NullEmailSender>();
            builder.Services.AddScoped <ISmsSender, NullSmsSender>();

            return(builder);
        }
Example #9
0
        /// <summary>
        /// Configures IdentityUI
        /// </summary>
        /// <param name="services"></param>
        /// <param name="configuration"></param>
        /// <param name="endpointAction"></param>
        /// <returns></returns>
        public static IdentityUIServicesBuilder ConfigureIdentityUI(this IServiceCollection services, IConfiguration configuration,
                                                                    Action <IdentityUIEndpoints> endpointAction)
        {
            IdentityUIOptions identityUIOptions = configuration.GetSection("IdentityUI").Get <IdentityUIOptions>();

            if (identityUIOptions == null)
            {
                identityUIOptions = new IdentityUIOptions();
            }

            services.Configure <IdentityUIOptions>(options =>
            {
                options.BasePath    = identityUIOptions.BasePath;
                options.Database    = identityUIOptions.Database;
                options.EmailSender = identityUIOptions.EmailSender;
            });

            services.Configure <ReCaptchaOptions>(options =>
            {
                options.SiteKey    = identityUIOptions.ReCaptcha?.SiteKey;
                options.SiteSecret = identityUIOptions.ReCaptcha?.SiteSecret;
            });

            DatabaseOptions databaseOptions = new DatabaseOptions
            {
                Type             = identityUIOptions.Database?.Type ?? DatabaseTypes.InMemory,
                ConnectionString = identityUIOptions.Database?.ConnectionString
            };

            services.Configure <DatabaseOptions>(options =>
            {
                options.Type             = databaseOptions.Type;
                options.ConnectionString = databaseOptions.ConnectionString;
            });

            services.Configure <EmailSenderOptions>(options =>
            {
                options.Ip                = identityUIOptions.EmailSender?.Ip;
                options.Port              = identityUIOptions.EmailSender?.Port ?? -1;
                options.UserName          = identityUIOptions.EmailSender?.UserName;
                options.Password          = identityUIOptions.EmailSender?.Password;
                options.SenderEmail       = identityUIOptions.EmailSender?.SenderName;
                options.SenderEmail       = identityUIOptions.EmailSender?.SenderEmail;
                options.SenderDisplayName = identityUIOptions.EmailSender?.SenderDisplayName;
                options.UseSSL            = identityUIOptions.EmailSender?.UseSSL ?? false;
            });

            IdentityUIEndpoints identityManagementEndpoints = new IdentityUIEndpoints();

            endpointAction?.Invoke(identityManagementEndpoints);

            if (!identityManagementEndpoints.UseEmailSender.HasValue)
            {
                if (identityUIOptions.EmailSender == null || string.IsNullOrEmpty(identityUIOptions.EmailSender.Ip))
                {
                    identityManagementEndpoints.UseEmailSender = false;
                }
                else
                {
                    identityManagementEndpoints.UseEmailSender = true;
                }
            }

            services.Configure <IdentityUIEndpoints>(options =>
            {
                options.Home = identityManagementEndpoints.Home;

                options.Login        = identityManagementEndpoints.Login;
                options.Logout       = identityManagementEndpoints.Logout;
                options.AccessDenied = identityManagementEndpoints.AccessDenied;

                options.Manage = identityManagementEndpoints.Manage;

                options.ConfirmeEmail = identityManagementEndpoints.ConfirmeEmail;
                options.ResetPassword = identityManagementEndpoints.ResetPassword;
                options.AcceptInvite  = identityManagementEndpoints.AcceptInvite;

                options.ProfileImage        = identityManagementEndpoints.ProfileImage;
                options.AdminLogo           = identityManagementEndpoints.AdminLogo;
                options.AccountSettingsLogo = identityManagementEndpoints.AccountSettingsLogo;

                options.RegisterEnabled          = identityManagementEndpoints.RegisterEnabled;
                options.GroupRegistrationEnabled = identityManagementEndpoints.GroupRegistrationEnabled;

                options.AuthenticatorIssuer = identityManagementEndpoints.AuthenticatorIssuer;

                options.UseEmailSender         = identityManagementEndpoints.UseEmailSender;
                options.UseSmsGateway          = identityManagementEndpoints.UseSmsGateway;
                options.InviteValidForTimeSpan = identityManagementEndpoints.InviteValidForTimeSpan;

                options.BypassTwoFactorOnExternalLogin = identityManagementEndpoints.BypassTwoFactorOnExternalLogin;
                options.UseEmailAsUsername             = identityManagementEndpoints.UseEmailAsUsername;
                options.ShowAuditToUser    = identityManagementEndpoints.ShowAuditToUser;
                options.CanChangeGroupName = identityManagementEndpoints.CanChangeGroupName;
                options.CanRemoveGroup     = identityManagementEndpoints.CanRemoveGroup;
                options.CanRemoveUser      = identityManagementEndpoints.CanRemoveUser;
                options.AllowImpersonation = identityManagementEndpoints.AllowImpersonation;
            });

            IdentityUIServicesBuilder builder = new IdentityUIServicesBuilder(services, identityManagementEndpoints, databaseOptions, configuration);

            builder.Services.AddScoped <IEmailSender, NullEmailSender>();
            builder.Services.AddScoped <ISmsSender, NullSmsSender>();
            builder.Services.AddScoped <IReleaseManagement, ReleaseManagement>();

            builder.Services.AddAudit();
            builder.Services.AddTransient <IAuditDbContext, IdentityDbContext>();

            services.AddScoped <Audit.Services.IAuditSubjectDataService>(x =>
            {
                Microsoft.Extensions.Options.IOptions <Audit.Models.AuditOptions> auditOptions        = x.GetRequiredService <Microsoft.Extensions.Options.IOptions <Audit.Models.AuditOptions> >();
                Microsoft.Extensions.Options.IOptions <IdentityUIClaimOptions> identityUIClaimOptions = x.GetRequiredService <Microsoft.Extensions.Options.IOptions <IdentityUIClaimOptions> >();

                Microsoft.AspNetCore.Http.IHttpContextAccessor httpContextAccessor = x.GetRequiredService <Microsoft.AspNetCore.Http.IHttpContextAccessor>();

                IIdentityUIUserInfoService identityUIUserInfoService = x.GetRequiredService <IIdentityUIUserInfoService>();

                if (httpContextAccessor.HttpContext != null)
                {
                    return(new IdentityUIAuditSubjectService(httpContextAccessor, identityUIUserInfoService, auditOptions, identityUIClaimOptions));
                }

                Audit.Services.IBackgroundServiceContextAccessor backgroundServiceContextAccessor = x.GetRequiredService <Audit.Services.IBackgroundServiceContextAccessor>();
                if (backgroundServiceContextAccessor.BackgroundServiceContext != null)
                {
                    return(new Audit.Services.BackgroundServiceAuditSubjectDataService(backgroundServiceContextAccessor));
                }

                return(new Audit.Services.DefaultAuditSubjectService(auditOptions));
            });

            return(builder);
        }