示例#1
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());
        }