/// <summary> /// Create roles and return the admin role id /// </summary> /// <param name="tenantId"></param> /// <param name="companyId"></param> public string CreateTenantRole(string tenantId, string companyId) { var roles = StaticRoles.GetRoles(); if (_roleRepository.GetAll().FilterTenant(tenantId).Any()) { return(null); } string adminRoleId = Guid.NewGuid().ToString(); foreach (var role in roles) { var id = role.Name == StaticRoles.Admin.Name ? adminRoleId : Guid.NewGuid().ToString(); _roleRepository.Create(new Role { Id = id, Name = role.Name, DisplayName = role.DisplayName, AccessLevel = role.AccessLevel, TenantId = tenantId, CompanyId = companyId }); } _roleRepository.Save(); return(adminRoleId); }
public static void Build(BusinessDbContext db, string tenantId) { var roles = StaticRoles.GetRoles(); Company company; Tenant tenant; if (string.IsNullOrWhiteSpace(tenantId)) { company = db.Companies.FirstOrDefault(x => x.Name == StaticCompany.Host); tenant = db.Tenants.FirstOrDefault(x => x.Name == StaticTenant.Host); tenantId = tenant?.Id; } else { company = db.Companies.FirstOrDefault(x => x.TenantId == tenantId); tenant = db.Tenants.FirstOrDefault(x => x.Id == tenantId); } if (tenant?.Name != StaticTenant.Host) { roles = roles.Where(x => x.Name != StaticRoles.SystemAdmin.Name).ToList(); } if (!db.Roles.Any(x => x.TenantId == tenantId)) { foreach (var role in roles) { db.Roles.Add(new Role { Id = Guid.NewGuid().ToString(), Name = role.Name, DisplayName = role.DisplayName, AccessLevel = role.AccessLevel, TenantId = tenant?.Id, CompanyId = company?.Id }); } db.SaveChanges(); } else { foreach (var role in roles.Where(role => db.Roles.FirstOrDefault(x => x.Name == role.Name && x.TenantId == tenantId) == null)) { db.Roles.Add(new Role { Id = Guid.NewGuid().ToString(), Name = role.Name }); } db.SaveChanges(); } }