public void Init() { var connectionString = ConfigurationHelper.GetConnectionString(true); var services = new ServiceCollection(); services.AddTransient(typeof(IMultiTenantUserClaimStore <User, long>), typeof(MultiTenantUserClaimStore <User, Role, long, long>)); services.AddTransient(typeof(IMultiTenantUserRoleStore <User, long>), typeof(MultiTenantUserRoleStore <User, Role, long, long>)); var builder = services.AddIdentity <User, Role>() .AddEntityFrameworkStores <MultiTenantIamDbContext <User, Role, long, long> >() .AddDefaultTokenProviders(); services.AddAuthentication(options => { options.DefaultAuthenticateScheme = "Bearer"; options.DefaultChallengeScheme = "Bearer"; }); services.AddAuthorization(); services.AddMultiTenantIamCore <long>(); services.AddDbContext <MultiTenantIamDbContext <User, Role, long, long> >(options => options.UseSqlServer(connectionString)); serviceProvider = services.BuildServiceProvider(); using (var scope = serviceProvider.CreateScope()) { var dbContext = scope.ServiceProvider.GetRequiredService(typeof(MultiTenantIamDbContext <User, Role, long, long>)) as MultiTenantIamDbContext <User, Role, long, long>; dbContext.Database.EnsureCreated(); new Checkpoint().Reset(connectionString).Wait(); } userManager = serviceProvider.GetRequiredService(typeof(UserManager <User>)) as UserManager <User>; claimStore = serviceProvider.GetRequiredService(typeof(IMultiTenantUserClaimStore <User, long>)) as IMultiTenantUserClaimStore <User, long>; roleStore = serviceProvider.GetRequiredService(typeof(IMultiTenantUserRoleStore <User, long>)) as IMultiTenantUserRoleStore <User, long>; var roleManager = serviceProvider.GetRequiredService(typeof(RoleManager <Role>)) as RoleManager <Role>; roleManager.CreateAsync(new Role() { Name = "admin" }).Wait(); roleManager.CreateAsync(new Role() { Name = "manager" }).Wait(); userManager.CreateAsync(new User() { UserName = "******", }).Wait(); user = userManager.FindByNameAsync("test").Result; }
public IamMultiTenantUserClaimsPrincipalFactory(UserManager <TUser> userManager, RoleManager <TRole> roleManager, IMultiTenantUserClaimStore <TUser, TTenantKey> userClaimStore, IMultiTenantUserRoleStore <TUser, TTenantKey> roleStore, IMultiTenantRoleClaimStore <TRole, TTenantKey> roleClaimStore, IOptions <IdentityOptions> identityOptions) : base(userManager, identityOptions) { _userManager = userManager; _roleManager = roleManager; _userClaimStore = userClaimStore; _roleStore = roleStore; _roleClaimStore = roleClaimStore; }
public void Init() { var services = new ServiceCollection(); services.AddTransient(typeof(IMultiTenantUserClaimStore <User, long>), typeof(MemoryMultiTenantStore <User, Role, long, long>)); services.AddTransient(typeof(IMultiTenantUserRoleStore <User, long>), typeof(MemoryMultiTenantStore <User, Role, long, long>)); var builder = services.AddIdentity <User, Role>() .AddEntityFrameworkStores <IdentityDbContext <User, Role, long> >() .AddDefaultTokenProviders(); services.AddAuthentication(options => { options.DefaultAuthenticateScheme = "Bearer"; options.DefaultChallengeScheme = "Bearer"; }); services.AddAuthorization(); services.AddMultiTenantIamCore <long>(); services.AddDbContext <IdentityDbContext <User, Role, long> >(options => options.UseInMemoryDatabase("test")); serviceProvider = services.BuildServiceProvider(); userManager = serviceProvider.GetRequiredService(typeof(UserManager <User>)) as UserManager <User>; claimStore = serviceProvider.GetRequiredService(typeof(IMultiTenantUserClaimStore <User, long>)) as IMultiTenantUserClaimStore <User, long>; roleStore = serviceProvider.GetRequiredService(typeof(IMultiTenantUserRoleStore <User, long>)) as IMultiTenantUserRoleStore <User, long>; userManager.CreateAsync(new User() { UserName = "******", }).Wait(); user = userManager.FindByNameAsync("test").Result; }
private static void AddClaimsMt(string userName, long[] tenantIds, string[] claims, UserManager <User> userManager, IMultiTenantUserClaimStore <User, long> store) { var user = userManager.FindByNameAsync(userName).Result; foreach (var tenantId in tenantIds) { if (!userManager.AttachPoliciesAsync <User, long>(store, user, tenantId, claims).Result.Succeeded) { throw new Exception("Couldn't add claims to user"); } } }
private static void AddResourceIdAccessMt(string userName, string[] policies, long[] tenantIds, UserManager <User> userManager, IMultiTenantUserClaimStore <User, long> claimStore, bool hasAccessToAll, params long[] resourceIds) { var user = userManager.FindByNameAsync(userName).Result; foreach (var policy in policies) { foreach (var tenantId in tenantIds) { if (hasAccessToAll) { userManager.GrantAccessToAllResources <User, long>(claimStore, user, tenantId, policy).Wait(); } else { userManager.GrantAccessToResources <User, long, long>(claimStore, user, tenantId, policy, resourceIds).Wait(); } } } }