public bool HasPermission(PermissionNames permission) { var claimType = PermissionHelpers.CreateClaimType(permission); foreach (var claim in this.Claims) { if (claim.ClaimType == claimType) { return(true); } } return(false); }
public PermissionRequirement(PermissionNames permission) { Permission = permission; ClaimType = PermissionHelpers.CreateClaimType(permission); }
async Task ITenantManagementJobs.InitializeNewTenantAsync(TenantInitializeDetails details) { var finder = new MyDummyTenantFinder(details.DatabaseName, details.TenantId); using (var rdb = new TraffkTenantModelDbContext(RdbOptions, finder, new ConfigStringFormatter(finder) { })) { try { rdb.Database.OpenConnection(); } catch (Exception sex) { throw new Exception("Database has not been created yet", sex); } using (var trans = await rdb.Database.BeginTransactionAsync()) { var t = await rdb.Tenants.FindAsync(details.TenantId); if (t == null) { t = new Tenant { TenantId = details.TenantId, TenantName = details.TenantName, TenantType = Tenant.TenantTypes.Normal, }; rdb.Tenants.Add(t); rdb.Apps.Add(new App { Tenant = t, AppType = AppTypes.Portal, AppName = AppTypes.Portal.ToString(), }); await rdb.SaveChangesAsync(); var r = new ApplicationRole { Tenant = t, Name = "Bootstrap", NormalizedName = "bootstrap", }; rdb.Roles.Add(r); var u = new ApplicationUser { Tenant = t, Email = details.AdminUsername, NormalizedEmail = details.AdminUsername.ToUpper(), NormalizedUserName = details.AdminUsername.ToUpper(), }; rdb.Users.Add(u); await rdb.SaveChangesAsync(); u.PasswordHash = PasswordHasher.HashPassword(u, details.AdminPassword); rdb.UserRoles.Add(new ApplicationUserRole { UserId = u.Id, RoleId = r.Id, }); foreach (var p in new[] { PermissionNames.ManageJobs, PermissionNames.ManageUsers, PermissionNames.ManageRoles, PermissionNames.ManageTenants, PermissionNames.CustomerRelationshipData, PermissionNames.DirectMessaging, PermissionNames.ReleaseLog, }) { rdb.RoleClaims.Add(new RoleClaim { RoleId = r.Id, ClaimType = PermissionHelpers.CreateClaimType(p), ClaimValue = new PermissionClaimValue(true).ToJson() }); } } await rdb.SaveChangesAsync(); trans.Commit(); } } }
public ApiRequirement(ApiNames api) { Api = api; ClaimType = PermissionHelpers.CreateClaimType(api); }