public void RemoveRights(Account tenant, ETenantRights rights) { if (tenant == null) { throw new ArgumentNullException(nameof(tenant)); } if (!Enum.IsDefined(typeof(ETenantRights), rights)) { throw new InvalidEnumArgumentException(nameof(rights), (int)rights, typeof(ETenantRights)); } TenantRight current = TenantRights.FirstOrDefault(x => (x != null) && (x.TenantId == tenant.Id)); if (current == null) { return; } current.Remove(rights); if (current.Rights.HasNoFlags <ETenantRights>()) { TenantRights.Remove(current); } }
public void AddTenantRights(Account tenant, ETenantRights rights) { if (tenant == null) { throw new ArgumentNullException(nameof(tenant)); } TenantRight current = TenantRights.FirstOrDefault(x => x.TenantId == tenant.Id); if (current == null) { TenantRights.Add(new TenantRight(rights, tenant)); } else { current.Add(rights); } }
public List <Claim> GetClaims() { List <Claim> claimsIdentity = new List <Claim> { (Admin ? (new Claim(ClaimTypes.Role, AuthRoles.ERoles.ADMIN.ToString())) : (new Claim(ClaimTypes.Role, AuthRoles.ERoles.VIEWER.ToString()))), new Claim(ClaimTypes.Name, Name) }; if (Admin || Premium) { claimsIdentity.Add(new Claim(nameof(EClaimTypes.SUBSCRIPTION_LEVEL), nameof(AuthRoles.ESubscriptionPolicy.PREMIUM))); } string banned = GetRightsAccountString(TenantRights.Where(x => x.IsBanned())); if (!string.IsNullOrEmpty(banned)) { claimsIdentity.Add(new Claim(EClaimTypes.TENANT_BANNED.ToString(), banned)); } string editor = GetRightsAccountString(TenantRights.Where(x => x.HasRights(ETenantRights.EDITOR))); if (!string.IsNullOrEmpty(editor)) { claimsIdentity.Add(new Claim(EClaimTypes.TENANT_EDITOR.ToString(), editor)); } string moderator = GetRightsAccountString(TenantRights.Where(x => !x.HasRights(ETenantRights.EDITOR) && x.HasRights(ETenantRights.MODERATOR))); if (!string.IsNullOrEmpty(moderator)) { claimsIdentity.Add(new Claim(EClaimTypes.TENANT_MODERATOR.ToString(), moderator)); } return(claimsIdentity); }