private static void AddServices(this IdentityUIServicesBuilder builder) { builder.Services.AddScoped <IManageUserService, ManageUserService>(); builder.Services.AddScoped <IAddUserService, AddUserService>(); builder.Services.AddScoped <IRoleService, RoleService>(); builder.Services.AddScoped <IGroupService, GroupService>(); builder.Services.AddScoped <IRoleAssignmentService, RoleAssignmentService>(); builder.Services.AddScoped <IRolePermissionService, RolePermissionService>(); builder.Services.AddScoped <IGroupUserService, GroupUserService>(); builder.Services.AddScoped <IGroupAttributeService, GroupAttributeService>(); builder.Services.AddScoped <IPermissionService, PermissionService>(); builder.Services.AddScoped <IInviteService, InviteService>(); builder.Services.AddScoped <IEmailService, EmailService>(); builder.Services.AddScoped <IManageEmailService, ManageEmailService>(); builder.Services.AddScoped <ILoginService, LoginService>(); builder.Services.AddScoped <ITwoFactorAuthService, TwoFactorAuthService>(); builder.Services.AddScoped <Interfaces.Services.Auth.IEmailConfirmationService, EmailConfirmationService>(); builder.Services.AddScoped <ICredentialsService, Core.Services.Auth.Credentials.CredentialsService>(); builder.Services.AddScoped <ISessionService, Services.Auth.Session.SessionService>(); builder.Services.AddScoped <IUserClaimsPrincipalFactory <AppUserEntity>, CustomClaimsPrincipalFactory>(); builder.Services.AddScoped <ISecurityStampValidator, CustomSecurityStampValidator>(); }
private static void AddValidators(this IdentityUIServicesBuilder builder) { builder.Services.AddSingleton <IValidator <Core.Services.User.Models.EditUserRequest>, Core.Services.User.Models.EditUserRequestValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.User.Models.SetNewPasswordRequest>, Core.Services.User.Models.SetNewPasswordValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.User.Models.NewUserRequest>, Core.Services.User.Models.NewUserRequestValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.User.Models.RegisterRequest>, Core.Services.User.Models.RegisterRequestValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.Auth.Login.Models.LoginRequest>, Core.Services.Auth.Login.Models.LoginRequestValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.Auth.Login.Models.LoginWith2faRequest>, Core.Services.Auth.Login.Models.LoginWith2faRequestValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.Auth.TwoFactorAuth.Models.AddTwoFactorAuthenticatorRequest>, Core.Services.Auth.TwoFactorAuth.Models.AddTwoFactorAuthicatorValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.Role.Models.NewRoleRequest>, Core.Services.Role.Models.NewRoleValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.Role.Models.EditRoleRequest>, Core.Services.Role.Models.EditRoleValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.Auth.Credentials.Models.RecoverPasswordRequest>, Core.Services.Auth.Credentials.Models.RecoverPasswordValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.Auth.Credentials.Models.ResetPasswordRequest>, Core.Services.Auth.Credentials.Models.ResetPasswordValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.Auth.Credentials.Models.ChangePasswordRequest>, Core.Services.Auth.Credentials.Models.ChangePasswordValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.User.Models.EditProfileRequest>, Core.Services.User.Models.EditProfileValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.User.Models.UnlockUserRequest>, Core.Services.User.Models.UnlockUserValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.User.Models.SendEmailVerificationMailRequest>, Core.Services.User.Models.SendEmailVerificationMailValidtor>(); builder.Services.AddSingleton <IValidator <Core.Services.Auth.Session.Models.LogoutSessionRequest>, Core.Services.Auth.Session.Models.LogoutSessionValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.Auth.Session.Models.LogoutUserSessionsRequest>, Core.Services.Auth.Session.Models.LogoutUserSessionValidator>(); }
private static void AddRepositories(this IdentityUIServicesBuilder builder) { builder.Services.AddTransient(typeof(IBaseRepository <>), typeof(BaseRepository <>)); builder.Services.AddTransient <IRoleRepository, RoleRepository>(); builder.Services.AddTransient <IUserRepository, UserRepository>(); builder.Services.AddTransient <IUserRoleRepository, UserRoleRepository>(); builder.Services.AddTransient <ISessionRepository, SessionRepository>(); builder.Services.AddTransient(typeof(IBaseRepositoryAsync <>), typeof(BaseRepositoryAsync <>)); builder.Services.AddTransient <IBaseDAO <AuditEntity>, AuditBaseDAO <AuditEntity> >(); builder.Services.AddTransient <IBaseDAO <AppUserEntity>, IdentityUIBaseDAO <AppUserEntity> >(); builder.Services.AddTransient <IBaseDAO <RoleClaimEntity>, IdentityUIBaseDAO <RoleClaimEntity> >(); builder.Services.AddTransient <IBaseDAO <RoleEntity>, IdentityUIBaseDAO <RoleEntity> >(); builder.Services.AddTransient <IBaseDAO <UserClaimEntity>, IdentityUIBaseDAO <UserClaimEntity> >(); builder.Services.AddTransient <IBaseDAO <UserLoginEntity>, IdentityUIBaseDAO <UserLoginEntity> >(); builder.Services.AddTransient <IBaseDAO <UserRoleEntity>, IdentityUIBaseDAO <UserRoleEntity> >(); builder.Services.AddTransient <IBaseDAO <UserTokenEntity>, IdentityUIBaseDAO <UserTokenEntity> >(); builder.Services.AddTransient <IBaseDAO <SessionEntity>, IdentityUIBaseDAO <SessionEntity> >(); builder.Services.AddTransient <IBaseDAO <UserAttributeEntity>, IdentityUIBaseDAO <UserAttributeEntity> >(); builder.Services.AddTransient <IBaseDAO <UserImageEntity>, IdentityUIBaseDAO <UserImageEntity> >(); builder.Services.AddTransient <IBaseDAO <GroupAttributeEntity>, IdentityUIBaseDAO <GroupAttributeEntity> >(); builder.Services.AddTransient <IBaseDAO <GroupEntity>, IdentityUIBaseDAO <GroupEntity> >(); builder.Services.AddTransient <IBaseDAO <GroupUserEntity>, IdentityUIBaseDAO <GroupUserEntity> >(); builder.Services.AddTransient <IBaseDAO <EmailEntity>, IdentityUIBaseDAO <EmailEntity> >(); builder.Services.AddTransient <IBaseDAO <PermissionEntity>, IdentityUIBaseDAO <PermissionEntity> >(); builder.Services.AddTransient <IBaseDAO <PermissionRoleEntity>, IdentityUIBaseDAO <PermissionRoleEntity> >(); builder.Services.AddTransient <IBaseDAO <RoleAssignmentEntity>, IdentityUIBaseDAO <RoleAssignmentEntity> >(); builder.Services.AddTransient <IBaseDAO <InviteEntity>, IdentityUIBaseDAO <InviteEntity> >(); }
/// <summary> /// Registers IdentityUI services /// </summary> /// <param name="builder"></param> /// <param name="identityOptions"></param> /// <returns></returns> public static IdentityUIServicesBuilder AddIdentityUI(this IdentityUIServicesBuilder builder, Action <IdentityOptions> identityOptions) { builder.Services.AddDbContext <IdentityDbContext>((provider, options) => { DatabaseOptions databaseOptions = provider.GetRequiredService <IOptionsSnapshot <DatabaseOptions> >().Value; if (databaseOptions == null) { throw new Exception("No DatabaseOptions"); } switch (databaseOptions.Type) { case DatabaseTypes.PostgreSql: { options.UseNpgsql(databaseOptions.ConnectionString); break; } case DatabaseTypes.InMemory: { options.UseInMemoryDatabase(databaseOptions.ConnectionString); break; } default: { throw new Exception($"Unsupported Database: {databaseOptions.Type}"); } } }); builder.Services.AddIdentity <AppUserEntity, RoleEntity>() .AddEntityFrameworkStores <IdentityDbContext>() .AddDefaultTokenProviders(); builder.AddValidators(); builder.AddRepositories(); builder.AddServices(); builder.Services.Configure <IdentityOptions>(identityOptions); builder.Services.Configure <SecurityStampValidatorOptions>(options => { options.ValidationInterval = TimeSpan.FromMinutes(1); options.OnRefreshingPrincipal = context => { Claim sessionCode = context.CurrentPrincipal.FindFirst(IdentityManagementClaims.SESSION_CODE); if (sessionCode != null) { context.NewPrincipal.Identities.First().AddClaim(sessionCode); } return(Task.CompletedTask); }; }); return(builder); }
public static IdentityUIServicesBuilder UseInMemoryDatabase(this IdentityUIServicesBuilder builder) { builder.Services.AddDbContext <IdentityDbContext>(options => options.UseInMemoryDatabase(builder.DatabaseOptions.ConnectionString)); builder.Services.AddSingleton <IUpdateList, EmptyUpdateList>(); builder.Services.AddScoped <IReleaseManagement, NullReleaseManagement>(); return(builder); }
private static void AddRepositories(this IdentityUIServicesBuilder builder) { builder.Services.AddTransient(typeof(IBaseRepository <>), typeof(BaseRepository <>)); builder.Services.AddTransient <IRoleRepository, RoleRepository>(); builder.Services.AddTransient <IUserRepository, UserRepository>(); builder.Services.AddTransient <IUserRoleRepository, UserRoleRepository>(); builder.Services.AddTransient <ISessionRepository, SessionRepository>(); }
private static void AddValidators(this IdentityUIServicesBuilder builder) { builder.Services.AddSingleton <IValidator <Core.Services.User.Models.EditUserRequest>, Core.Services.User.Models.EditUserRequestValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.User.Models.SetNewPasswordRequest>, Core.Services.User.Models.SetNewPasswordValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.User.Models.NewUserRequest>, Core.Services.User.Models.NewUserRequestValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.User.Models.RegisterRequest>, Core.Services.User.Models.RegisterRequestValidator>(); builder.Services.AddSingleton <IValidator <Services.User.Models.AcceptInviteRequest>, Services.User.Models.AcceptInviteRequestValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.Auth.Login.Models.LoginRequest>, Core.Services.Auth.Login.Models.LoginRequestValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.Auth.Login.Models.LoginWith2faRequest>, Core.Services.Auth.Login.Models.LoginWith2faRequestValidator>(); builder.Services.AddSingleton <IValidator <Services.Auth.Login.Models.LoginWithRecoveryCodeRequest>, Services.Auth.Login.Models.LoginWithRecoveryCodeRequestValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.Auth.TwoFactorAuth.Models.AddTwoFactorAuthenticatorRequest>, Core.Services.Auth.TwoFactorAuth.Models.AddTwoFactorAuthicatorValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.Auth.TwoFactorAuth.Models.AddTwoFactorPhoneAuthenticationRequest>, Core.Services.Auth.TwoFactorAuth.Models.AddTwoFactorPhoneAuthenticationRequestValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.Auth.TwoFactorAuth.Models.AddTwoFactorEmailAuthenticationRequest>, Core.Services.Auth.TwoFactorAuth.Models.AddTwoFactorEmailAuthenticationRequestValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.Role.Models.NewRoleRequest>, Core.Services.Role.Models.NewRoleValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.Role.Models.EditRoleRequest>, Core.Services.Role.Models.EditRoleValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.Auth.Credentials.Models.RecoverPasswordRequest>, Core.Services.Auth.Credentials.Models.RecoverPasswordValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.Auth.Credentials.Models.ResetPasswordRequest>, Core.Services.Auth.Credentials.Models.ResetPasswordValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.Auth.Credentials.Models.ChangePasswordRequest>, Core.Services.Auth.Credentials.Models.ChangePasswordValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.User.Models.EditProfileRequest>, Core.Services.User.Models.EditProfileValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.User.Models.UnlockUserRequest>, Core.Services.User.Models.UnlockUserValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.User.Models.SendEmailVerificationMailRequest>, Core.Services.User.Models.SendEmailVerificationMailValidtor>(); builder.Services.AddSingleton <IValidator <Core.Services.Auth.Session.Models.LogoutSessionRequest>, Core.Services.Auth.Session.Models.LogoutSessionValidator>(); builder.Services.AddSingleton <IValidator <Core.Services.Auth.Session.Models.LogoutUserSessionsRequest>, Core.Services.Auth.Session.Models.LogoutUserSessionValidator>(); builder.Services.AddSingleton <IValidator <AddRoleAssignmentRequest>, AddRoleAssignmentRequestValidator>(); builder.Services.AddSingleton <IValidator <Services.Group.Models.AddGroupRequest>, Services.Group.Models.AddGroupRequestValidator>(); builder.Services.AddSingleton <IValidator <AddRolePermissionRequest>, Services.Role.Models.AddRolePermissionRequestValidator>(); builder.Services.AddSingleton <IValidator <Services.Group.Models.AddExistingUserRequest>, Services.Group.Models.AddExisingUserRequestValidator>(); builder.Services.AddSingleton <IValidator <Services.Group.Models.InviteUserToGroupRequest>, Services.Group.Models.InviteUserToGroupRequestValidator>(); builder.Services.AddSingleton <IValidator <Services.Group.Models.AddGroupAttributeRequest>, Services.Group.Models.AddGroupAttributeRequestValidator>(); builder.Services.AddSingleton <IValidator <Services.Group.Models.EditGroupAttributeRequest>, Services.Group.Models.EditGroupAttributeRequestValidator>(); builder.Services.AddSingleton <IValidator <Services.Permission.Models.AddPermissionRequest>, Services.Permission.Models.AddPermissionRequestValidator>(); builder.Services.AddSingleton <IValidator <Services.Permission.Models.EditPermissionRequest>, Services.Permission.Models.EditPermissionRequestValidator>(); builder.Services.AddSingleton <IValidator <Services.Email.Models.AddEmailRequest>, Services.Email.Models.AddEmailRequestValidator>(); builder.Services.AddSingleton <IValidator <Services.Email.Models.EditEmailRequest>, Services.Email.Models.EditEmailRequestValidator>(); builder.Services.AddSingleton <IValidator <Services.Email.Models.SendTesEmailRequest>, Services.Email.Models.SendTestEmailRequestValidator>(); builder.Services.AddSingleton <IValidator <Services.User.Models.InviteToGroupRequest>, Services.User.Models.InviteToGroupRequestValidator>(); builder.Services.AddSingleton <IValidator <Services.User.Models.InviteRequest>, Services.User.Models.InviteRequestValidatior>(); }
/// <summary> /// Configures AuthenticationCookie /// </summary> /// <param name="builder"></param> /// <param name="optionsAction"></param> /// <returns></returns> public static IdentityUIServicesBuilder AddAuth(this IdentityUIServicesBuilder builder, Action <CookieAuthenticationOptions> optionsAction) { builder.Services.ConfigureApplicationCookie(optionsAction); Microsoft.AspNetCore.Authentication.AuthenticationBuilder authenticationBuilder = builder.Services.AddAuthentication(); if (!string.IsNullOrEmpty(builder.Configuration["IdentityUI:Microsoft:ClientId"]) && !string.IsNullOrEmpty(builder.Configuration["IdentityUI:Microsoft:ClientSecret"])) { authenticationBuilder.AddMicrosoftAccount(options => { options.ClientId = builder.Configuration["IdentityUI:Microsoft:ClientId"]; options.ClientSecret = builder.Configuration["IdentityUI:Microsoft:ClientSecret"]; }); } if (!string.IsNullOrEmpty(builder.Configuration["IdentityUI:Google:ClientId"]) && !string.IsNullOrEmpty(builder.Configuration["IdentityUI:Google:ClientSecret"])) { authenticationBuilder.AddGoogle(options => { options.ClientId = builder.Configuration["IdentityUI:Google:ClientId"]; options.ClientSecret = builder.Configuration["IdentityUI:Google:ClientSecret"]; }); } if (!string.IsNullOrEmpty(builder.Configuration["IdentityUI:Facebook:AppId"]) && !string.IsNullOrEmpty(builder.Configuration["IdentityUI:Facebook:AppSecret"])) { authenticationBuilder.AddFacebook(options => { options.AppId = builder.Configuration["IdentityUI:Facebook:AppId"]; options.AppSecret = builder.Configuration["IdentityUI:Facebook:AppSecret"]; }); } if (!string.IsNullOrEmpty(builder.Configuration["IdentityUI:Twitter:ConsumerKey"]) && !string.IsNullOrEmpty(builder.Configuration["IdentityUI:Twitter:ConsumerSecret"])) { authenticationBuilder.AddTwitter(options => { options.ConsumerKey = builder.Configuration["IdentityUI:Twitter:ConsumerKey"]; options.ConsumerSecret = builder.Configuration["IdentityUI:Twitter:ConsumerSecret"]; options.RetrieveUserDetails = builder.Configuration["IdentityUI:Twitter:RetrieveUserDetails"] == "True"; }); } if (!string.IsNullOrEmpty(builder.Configuration["IdentityUI:WsFederation:Wtrealm"])) { authenticationBuilder.AddWsFederation(options => { options.MetadataAddress = builder.Configuration["IdentityUI:WsFederation:MetadataAddress"]; options.Wtrealm = builder.Configuration["IdentityUI:WsFederation:Wtrealm"]; }); } return(builder); }
/// <summary> /// Configures IdentityUI /// </summary> /// <param name="services"></param> /// <param name="configuration"></param> /// <returns></returns> public static IdentityUIServicesBuilder ConfigureIdentityUI(this IServiceCollection services, IConfiguration configuration) { services.Configure <IdentityUIOptions>(configuration.GetSection("IdentityUI")); services.Configure <DatabaseOptions>(configuration.GetSection($"IdentityUI:{nameof(IdentityUIOptions.Database)}")); services.Configure <EmailSenderOptions>(configuration.GetSection($"IdentityUI:{nameof(IdentityUIOptions.EmailSender)}")); services.Configure <IdentityUIEndpoints>(configuration); IdentityUIServicesBuilder builder = new IdentityUIServicesBuilder(services, new IdentityUIEndpoints()); return(builder); }
/// <summary> /// Registers services for IdentityUI.Account /// </summary> /// <param name="builder"></param> /// <returns></returns> public static IdentityUIServicesBuilder AddAccountManagement(this IdentityUIServicesBuilder builder) { PagePath.HOME = builder.IdentityManagementEndpoints.Home; builder.Services.AddAdminTemplate(); builder.Services.AddScoped <IManageDataService, ManageDataService>(); builder.Services.ConfigureOptions(typeof(UIConfigureOptions)); return(builder); }
public static IdentityUIServicesBuilder AddGroupAdmin(this IdentityUIServicesBuilder builder) { builder.Services.AddScoped <IGroupAdminDashboardService, GroupAdminDashboardDataService>(); builder.Services.AddScoped <IGroupAdminUserDataService, GroupAdminUserDataService>(); builder.Services.AddScoped <IGroupAdminAuditDataService, GroupAdminAuditDataService>(); builder.Services.AddScoped <IGroupAdminInviteDataService, GroupAdminInviteDataService>(); builder.Services.AddScoped <IGroupAdminAttributeDataService, GroupAdminAttributeDataService>(); builder.Services.AddScoped <IGroupAdminSettingsDataService, GroupAdminSettingsDataService>(); builder.Services.AddTransient <IValidator <GroupAdminAuditTableRequest>, GroupAdminAuditTableRequestValidator>(); return(builder); }
public static IdentityUIServicesBuilder UseSqlServer(this IdentityUIServicesBuilder builder, string connectionString) { builder.Services.AddDbContext <IdentityDbContext>(options => { options.UseSqlServer(connectionString, b => { b.MigrationsAssembly(typeof(IdentityUISqlServerExtensions).Assembly.FullName); }); }); builder.Services.AddSingleton <IUpdateList, SqlServerUpdateList>(); return(builder); }
private static void AddServices(this IdentityUIServicesBuilder builder) { builder.Services.AddScoped <IUrlGenerator, UrlGenerator>(); builder.Services.AddScoped <IManageUserService, ManageUserService>(); builder.Services.AddScoped <IAddUserService, AddUserService>(); builder.Services.AddScoped <IRoleService, RoleService>(); builder.Services.AddScoped <IGroupService, GroupService>(); builder.Services.AddScoped <IRoleAssignmentService, RoleAssignmentService>(); builder.Services.AddScoped <IRolePermissionService, RolePermissionService>(); builder.Services.AddScoped <IGroupUserService, GroupUserService>(); builder.Services.AddScoped <IGroupAttributeService, GroupAttributeService>(); builder.Services.AddScoped <IPermissionService, PermissionService>(); builder.Services.AddScoped <IInviteService, InviteService>(); builder.Services.AddScoped <IEmailService, EmailService>(); builder.Services.AddScoped <IManageEmailService, ManageEmailService>(); builder.Services.AddScoped <ILoginService, LoginService>(); builder.Services.AddScoped <ITwoFactorAuthService, TwoFactorAuthService>(); builder.Services.AddScoped <Interfaces.Services.Auth.IEmailConfirmationService, EmailConfirmationService>(); builder.Services.AddScoped <ICredentialsService, Core.Services.Auth.Credentials.CredentialsService>(); builder.Services.AddScoped <ISessionService, Services.Auth.Session.SessionService>(); builder.Services.AddScoped <IUserClaimsPrincipalFactory <AppUserEntity>, CustomClaimsPrincipalFactory>(); builder.Services.AddScoped <ISecurityStampValidator, CustomSecurityStampValidator>(); builder.Services.AddScoped <IProfileImageService, ProfileImageService>(); builder.Services.AddScoped <IExternalLoginService, Services.Auth.Login.ExternalLoginService>(); builder.Services.AddScoped <IUserAttributeService, UserAttributeService>(); builder.Services.AddScoped <IGroupRegistrationService, GroupRegistrationService>(); builder.Services.AddScoped <IImpersonateService, ImpersonateService>(); builder.Services.AddScoped <IIdentityUIUserInfoService, HttpContextUserInfoService>(); builder.Services.AddScoped <IDefaultProfileImageService, IdentityUIDefaultProfileImageService>(); builder.Services.AddScoped <ILoginFilter, LoginFilter>(); builder.Services.AddScoped <IAddUserFilter, NullAddUserFilter>(); builder.Services.AddScoped <IAddGroupUserFilter, NullAddGroupUserFilter>(); builder.Services.AddScoped <IAddInviteFilter, NullAddInviteFilter>(); }
/// <summary> /// Configures AuthenticationCookie /// </summary> /// <param name="builder"></param> /// <returns></returns> public static IdentityUIServicesBuilder AddAuth(this IdentityUIServicesBuilder builder) { Action <CookieAuthenticationOptions> cookieAuthenticationOptions = new Action <CookieAuthenticationOptions>(options => { options.Cookie.HttpOnly = true; options.LoginPath = builder.IdentityManagementEndpoints.Login; options.AccessDeniedPath = builder.IdentityManagementEndpoints.AccessDenied; options.SlidingExpiration = true; options.LogoutPath = builder.IdentityManagementEndpoints.Logout; }); builder.AddAuth(cookieAuthenticationOptions); return(builder); }
/// <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) { services.Configure <IdentityUIOptions>(configuration.GetSection("IdentityUI")); services.Configure <DatabaseOptions>(configuration.GetSection($"IdentityUI:{nameof(IdentityUIOptions.Database)}")); services.Configure <EmailSenderOptions>(configuration.GetSection($"IdentityUI:{nameof(IdentityUIOptions.EmailSender)}")); services.Configure <IdentityUIEndpoints>(endpointAction); IdentityUIEndpoints identityManagementEndpoints = new IdentityUIEndpoints(); endpointAction?.Invoke(identityManagementEndpoints); IdentityUIServicesBuilder builder = new IdentityUIServicesBuilder(services, identityManagementEndpoints); return(builder); }
private static void AddServices(this IdentityUIServicesBuilder builder) { builder.Services.AddScoped <IManageUserService, ManageUserService>(); builder.Services.AddScoped <IAddUserService, AddUserService>(); builder.Services.AddScoped <IRoleService, RoleService>(); builder.Services.AddScoped <ILoginService, LoginService>(); builder.Services.AddScoped <ITwoFactorAuthService, TwoFactorAuthService>(); builder.Services.AddScoped <IEmailService, EmailService>(); builder.Services.AddScoped <ICredentialsService, Core.Services.Auth.Credentials.CredentialsService>(); builder.Services.AddScoped <ISessionService, Services.Auth.Session.SessionService>(); builder.Services.AddScoped <IUserClaimsPrincipalFactory <AppUserEntity>, CustomClaimsPrincipalFactory>(); builder.Services.AddScoped <ISecurityStampValidator, CustomSecurityStampValidator>(); }
/// <summary> /// Registers services for IdentityUI.Admin /// </summary> /// <param name="builder"></param> /// <returns></returns> public static IdentityUIServicesBuilder AddIdentityAdmin(this IdentityUIServicesBuilder builder) { PagePath.LOGOUT = builder.IdentityManagementEndpoints.Logout; PagePath.MANAGE = builder.IdentityManagementEndpoints.Manage; PagePath.HOME = builder.IdentityManagementEndpoints.Home; builder.Services.AddAdminTemplate(); builder.Services.ConfigureOptions(typeof(UIConfigureOptions)); builder.Services.AddSingleton <IValidator <DataTableRequest>, DataTableValidator>(); builder.Services.AddScoped <IUserDataService, UserDataService>(); builder.Services.AddScoped <IRoleDataService, RoleDataService>(); return(builder); }
/// <summary> /// Registers services for IdentityUI.Admin /// </summary> /// <param name="builder"></param> /// <returns></returns> public static IdentityUIServicesBuilder AddIdentityAdmin(this IdentityUIServicesBuilder builder) { PagePath.LOGOUT = builder.IdentityManagementEndpoints.Logout; PagePath.MANAGE = builder.IdentityManagementEndpoints.Manage; PagePath.HOME = builder.IdentityManagementEndpoints.Home; builder.Services.AddAdminTemplate(); builder.Services.ConfigureOptions(typeof(UIConfigureOptions)); builder.Services.AddSingleton <IValidator <DataTableRequest>, DataTableValidator>(); builder.Services.AddScoped <IUserDataService, UserDataService>(); builder.Services.AddScoped <IRoleDataService, RoleDataService>(); builder.Services.AddScoped <IRoleAssignmentDataService, RoleAssignmentDataService>(); builder.Services.AddScoped <IRolePermissionsDataService, RolePermissionDataService>(); builder.Services.AddScoped <IPermissionDataService, PermissionDataService>(); builder.Services.AddScoped <IGroupDataService, GroupDataService>(); builder.Services.AddScoped <IGroupUserDataService, GroupUserDataService>(); builder.Services.AddScoped <IGroupInviteDataService, GroupInviteDataService>(); builder.Services.AddScoped <IGroupAttributeDataService, GroupAttributeDataService>(); builder.Services.AddScoped <IInviteDataService, InviteDataService>(); builder.Services.AddScoped <IEmailDataService, EmailDataService>(); builder.Services.AddScoped <IUserAttributeDataService, UserAttributeDataService>(); builder.Services.AddScoped <IAuditDataService, AuditDataService>(); builder.Services.AddSingleton <IValidator <AuditTableRequest>, AuditTableRequestValidator>(); builder.Services.AddScoped <Interfaces.IGroupUserDataService, Services.GroupUserDataService>(); builder.Services.AddScoped <Interfaces.IGroupInviteDataService, Services.GroupInviteDataService>(); builder.Services.AddScoped <Interfaces.IGroupAttributeDataService, Services.GroupAttributeDataService>(); builder.AddGroupAdmin(); return(builder); }
/// <summary> /// Registers services for IdentityUI.Account /// </summary> /// <param name="builder"></param> /// <returns></returns> public static IdentityUIServicesBuilder AddAccountManagement(this IdentityUIServicesBuilder builder) { PagePath.HOME = builder.IdentityManagementEndpoints.Home; builder.Services.AddAdminTemplate(); builder.Services.AddScoped <IManageDataService, ManageDataService>(); builder.Services.AddScoped <IAccountDataService, AccountDataService>(); builder.Services.AddScoped <ITwoFactorAuthenticationDataService, TwoFactorAuthenticationDataService>(); builder.Services.AddScoped <ICredentialsDataService, CredentialsDataService>(); builder.Services.AddScoped <IAuditDataService, AuditDataService>(); builder.Services.AddSingleton <IValidator <AuditTableRequest>, AuditTableRequestValidator>(); builder.Services.ConfigureOptions(typeof(UIConfigureOptions)); return(builder); }
/// <summary> /// Registers IdentityUI services /// </summary> /// <param name="builder"></param> /// <param name="identityOptions"></param> /// <returns></returns> public static IdentityUIServicesBuilder AddIdentityUI(this IdentityUIServicesBuilder builder, Action <IdentityOptions> identityOptions) { builder.Services.AddIdentity <AppUserEntity, RoleEntity>() .AddEntityFrameworkStores <IdentityDbContext>() .AddDefaultTokenProviders(); builder.AddValidators(); builder.AddRepositories(); builder.AddSeeders(); builder.AddServices(); builder.Services.AddScoped <IGroupStore, GroupStore>(); builder.Services.AddScoped <IGroupUserStore, GroupUserStore>(); //To create UrlHelper we need ActionContext builder.Services.AddSingleton <IActionContextAccessor, ActionContextAccessor>(); builder.Services.Configure <IdentityOptions>(identityOptions); builder.Services.Configure <SecurityStampValidatorOptions>(options => { options.ValidationInterval = TimeSpan.FromMinutes(1); //options.OnRefreshingPrincipal = context => //{ // Claim sessionCode = context.CurrentPrincipal.FindFirst(IdentityUIClaims.SESSION_CODE); // if (sessionCode != null) // { // context.NewPrincipal.Identities.First().AddClaim(sessionCode); // } // return Task.CompletedTask; //}; }); //builder.Services.Configure<IdentityUIClaimOptions>(options => //{ //}); return(builder); }
/// <summary> /// Registers IdentityUI services /// </summary> /// <param name="builder"></param> /// <returns></returns> public static IdentityUIServicesBuilder AddIdentityUI(this IdentityUIServicesBuilder builder) { Action <IdentityOptions> identityOptions = new Action <IdentityOptions>(options => { options.Password.RequireDigit = false; options.Password.RequiredLength = 6; options.Password.RequiredUniqueChars = 0; options.Password.RequireLowercase = true; options.Password.RequireUppercase = true; options.Password.RequireNonAlphanumeric = false; options.SignIn.RequireConfirmedEmail = true; options.SignIn.RequireConfirmedPhoneNumber = false; options.Lockout.AllowedForNewUsers = true; options.Lockout.MaxFailedAccessAttempts = 5; options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5); }); return(builder.AddIdentityUI(identityOptions)); }
/// <summary> /// Registers services for IdentityUI.Admin /// </summary> /// <param name="builder"></param> /// <returns></returns> public static IdentityUIServicesBuilder AddIdentityAdmin(this IdentityUIServicesBuilder builder) { PagePath.LOGOUT = builder.IdentityManagementEndpoints.Logout; PagePath.MANAGE = builder.IdentityManagementEndpoints.Manage; PagePath.HOME = builder.IdentityManagementEndpoints.Home; builder.Services.AddAdminTemplate(); builder.Services.ConfigureOptions(typeof(UIConfigureOptions)); builder.Services.AddSingleton <IValidator <DataTableRequest>, DataTableValidator>(); builder.Services.AddScoped <IUserDataService, UserDataService>(); builder.Services.AddScoped <IRoleDataService, RoleDataService>(); builder.Services.AddScoped <IRoleAssignmentDataService, RoleAssignmentDataService>(); builder.Services.AddScoped <IRolePermissionsDataService, RolePermissionDataService>(); builder.Services.AddScoped <IPermissionDataService, PermissionDataService>(); builder.Services.AddScoped <IGroupDataService, GroupDataService>(); builder.Services.AddScoped <IGroupUserDataService, GroupUserDataService>(); builder.Services.AddScoped <IGroupInviteDataService, GroupInviteDataService>(); builder.Services.AddScoped <IGroupAttributeDataService, GroupAttributeDataService>(); builder.Services.AddScoped <IInviteDataService, InviteDataService>(); builder.Services.AddScoped <IEmailDataService, EmailDataService>(); if (builder.IdentityManagementEndpoints.UseEmailSender.HasValue && builder.IdentityManagementEndpoints.UseEmailSender.Value == true) { SidebarSelection.UseEmailSender = true; } return(builder); }
/// <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); }
/// <summary> /// Configures AuthenticationCookie /// </summary> /// <param name="builder"></param> /// <param name="optionsAction"></param> /// <returns></returns> public static IdentityUIServicesBuilder AddAuth(this IdentityUIServicesBuilder builder, Action <CookieAuthenticationOptions> optionsAction) { builder.Services.ConfigureApplicationCookie(optionsAction); return(builder); }
/// <summary> /// Registers EmailSender /// </summary> /// <param name="builder"></param> /// <returns></returns> public static IdentityUIServicesBuilder AddEmailSender(this IdentityUIServicesBuilder builder) { builder.Services.AddScoped <IEmailSender, Infrastructure.Services.EmailSender>(); return(builder); }
public static IdentityUIServicesBuilder UseSqlServer(this IdentityUIServicesBuilder builder) { builder.UseSqlServer(builder.DatabaseOptions.ConnectionString); return(builder); }
/// <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); }
private static void AddSeeders(this IdentityUIServicesBuilder builder) { builder.Services.AddScoped <SystemEntitySeeder>(); builder.Services.AddScoped <AdminSeeder>(); builder.Services.AddScoped <UserSeeder>(); }