Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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);
        }