| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- using Abp.Authorization;
- using Microsoft.AspNetCore.Identity;
- using VberZero.Authorization;
- using VberZero.Authorization.Roles;
- using VberZero.Authorization.Users;
- // ReSharper disable once CheckNamespace - This is done to add extension methods to Microsoft.Extensions.DependencyInjection namespace
- namespace Microsoft.Extensions.DependencyInjection;
- public static class VzIdentityBuilderExtensions
- {
- public static VzIdentityBuilder AddVzTenantManager<T>(this VzIdentityBuilder builder)
- where T : VzTenantManager
- {
- var type = typeof(T);
- var managerType = typeof(VzTenantManager);
- builder.Services.AddScoped(type, provider => provider.GetRequiredService(managerType));
- builder.Services.AddScoped(managerType, type);
- return builder;
- }
- public static VzIdentityBuilder AddVzRoleManager<T>(this VzIdentityBuilder builder)
- where T : VzRoleManager
- {
- var type = typeof(T);
- var managerType = typeof(RoleManager<>).MakeGenericType(builder.RoleType);
- builder.Services.AddScoped(type, services => services.GetRequiredService(managerType));
- builder.AddRoleManager<T>();
- return builder;
- }
- public static VzIdentityBuilder AddVzUserManager<T>(this VzIdentityBuilder builder)
- where T : VzUserManager
- {
- var type = typeof(T);
- var managerType = typeof(UserManager<>).MakeGenericType(builder.UserType);
- builder.Services.AddScoped(type, services => services.GetRequiredService(managerType));
- builder.AddUserManager<T>();
- return builder;
- }
- public static VzIdentityBuilder AddVzSignInManager<T>(this VzIdentityBuilder builder)
- where T : VzSignInManager
- {
- var type = typeof(T);
- var managerType = typeof(SignInManager<>).MakeGenericType(builder.UserType);
- builder.Services.AddScoped(type, services => services.GetRequiredService(managerType));
- builder.AddSignInManager<T>();
- return builder;
- }
- public static VzIdentityBuilder AddVzLogInManager<TLogInManager>(this VzIdentityBuilder builder)
- where TLogInManager : VzLogInManager
- {
- var type = typeof(TLogInManager);
- var managerType = typeof(VzLogInManager);
- builder.Services.AddScoped(type, provider => provider.GetService(managerType) ?? throw new InvalidOperationException());
- builder.Services.AddScoped(managerType, type);
- return builder;
- }
- public static VzIdentityBuilder AddVzUserClaimsPrincipalFactory<T>(this VzIdentityBuilder builder)
- where T : VzUserClaimsPrincipalFactory
- {
- var type = typeof(T);
- builder.Services.AddScoped(typeof(UserClaimsPrincipalFactory<,>).MakeGenericType(builder.UserType, builder.RoleType), services => services.GetRequiredService(type));
- builder.Services.AddScoped(typeof(VzUserClaimsPrincipalFactory));
- builder.Services.AddScoped(typeof(IUserClaimsPrincipalFactory<>).MakeGenericType(builder.UserType), services => services.GetRequiredService(type));
- builder.Services.AddScoped(type);
- return builder;
- }
- public static VzIdentityBuilder AddVzSecurityStampValidator<T>(this VzIdentityBuilder builder)
- where T : class, ISecurityStampValidator
- {
- var type = typeof(T);
- builder.Services.AddScoped(typeof(SecurityStampValidator<>).MakeGenericType(builder.UserType), services => services.GetRequiredService(type));
- builder.Services.AddScoped(typeof(VzSecurityStampValidator));
- builder.Services.AddScoped(typeof(ISecurityStampValidator), services => services.GetRequiredService(type));
- builder.Services.AddScoped(type);
- return builder;
- }
- public static VzIdentityBuilder AddVzPermissionChecker<T>(this VzIdentityBuilder builder)
- where T : class
- {
- var type = typeof(T);
- var checkerType = typeof(VzPermissionChecker);
- builder.Services.AddScoped(type);
- builder.Services.AddScoped(checkerType, provider => provider.GetService(type) ?? throw new InvalidOperationException());
- builder.Services.AddScoped(typeof(IPermissionChecker), provider => provider.GetService(type) ?? throw new InvalidOperationException());
- return builder;
- }
- public static VzIdentityBuilder AddVzUserStore<T>(this VzIdentityBuilder builder)
- where T : class
- {
- var type = typeof(T);
- var vzStoreType = typeof(VzUserStore);
- var storeType = typeof(IUserStore<>).MakeGenericType(builder.UserType);
- builder.Services.AddScoped(type);
- builder.Services.AddScoped(vzStoreType, services => services.GetRequiredService(type));
- builder.Services.AddScoped(storeType, services => services.GetRequiredService(type));
- return builder;
- }
- public static VzIdentityBuilder AddVzRoleStore<T>(this VzIdentityBuilder builder)
- where T : class
- {
- var type = typeof(T);
- var vzStoreType = typeof(VzRoleStore);//.MakeGenericType(builder.RoleType, builder.UserType);
- var storeType = typeof(IRoleStore<>).MakeGenericType(builder.RoleType);
- builder.Services.AddScoped(type);
- builder.Services.AddScoped(vzStoreType, services => services.GetRequiredService(type));
- builder.Services.AddScoped(storeType, services => services.GetRequiredService(type));
- return builder;
- }
- }
|