Ejemplo n.º 1
0
        public async Task <IdentityUtilsResult> RemoveFromRoleAsync(Guid userId, Guid tenantId, Guid roleId)
        {
            var role = await roleManager.FindByIdAsync(roleId.ToString());

            TenantRolesClaimData tenantClaimData = new TenantRolesClaimData(tenantId);

            var tenantRolesClaim = (await GetUserTenantRolesClaims(userId, tenantId));

            if (tenantRolesClaim != null)
            {
                tenantClaimData.Roles = tenantClaimData.Roles
                                        .Where(x => x.Id != role.Id);
            }

            var result = await AddOrUpdateTenantRolesClaim(userId, tenantId, tenantClaimData);

            return(result);
        }
Ejemplo n.º 2
0
        public async Task <IdentityUtilsResult> AddToRoleAsync(Guid userId, Guid tenantId, Guid roleId)
        {
            var role = await roleManager.FindByIdAsync(roleId.ToString());

            TenantRolesClaimData tenantClaimData = new TenantRolesClaimData(tenantId);

            var tenantRolesClaim = (await GetUserTenantRolesClaims(userId, tenantId));

            if (tenantRolesClaim != null)
            {
                tenantClaimData = tenantRolesClaim
                                  .Value
                                  .DeserializeToTenantRolesClaimData();
            }

            tenantClaimData.Roles = tenantClaimData
                                    .Roles
                                    .Append(new RoleBasicData(role.Id, role.NormalizedName))
                                    .Distinct();

            var result = await AddOrUpdateTenantRolesClaim(userId, tenantId, tenantClaimData);

            return(result);
        }
Ejemplo n.º 3
0
        private async Task <IdentityUtilsResult> AddOrUpdateTenantRolesClaim(Guid userId, Guid tenantId, TenantRolesClaimData tenantClaimData)
        {
            var result = IdentityResult.Success;
            var newTenantRolesClaim = new Claim(TenantClaimsSchema.TenantRolesData, tenantClaimData.Serialize());
            var oldTenantRolesClaim = await GetUserTenantRolesClaims(userId, tenantId);

            var(userResult, user) = await FindByIdAsync(userId).UnpackSingleOrDefault();

            if (!userResult.Success)
            {
                return(userResult);
            }

            if (oldTenantRolesClaim != null)
            {
                result = await userManager.RemoveClaimAsync(user, oldTenantRolesClaim);
            }

            if (result.Succeeded)
            {
                result = await userManager.AddClaimAsync(user, newTenantRolesClaim);
            }

            return(result.ToIdentityUtilsResult());
        }