public async Task <ResultModel> UpdateIdentityResource(IdentityResourceUpdateDto identityResourceUpdateDto)
        {
            if (string.IsNullOrWhiteSpace(identityResourceUpdateDto.Name))
            {
                return(new ResultModel(ResultCode.Fail, "请输入认证资源名称"));
            }
            try
            {
                var identityResource = await _userDatabaseContext.IdentityResources.Where(x => x.Id == identityResourceUpdateDto.Id)
                                       .Include(x => x.UserClaims)
                                       .Include(x => x.Properties)
                                       .FirstOrDefaultAsync();

                identityResource.Updated                 = DateTime.Now;
                identityResource.Enabled                 = identityResourceUpdateDto.Enabled;
                identityResource.Name                    = identityResourceUpdateDto.Name;
                identityResource.DisplayName             = identityResourceUpdateDto.DisplayName;
                identityResource.Required                = identityResourceUpdateDto.Required;
                identityResource.Emphasize               = identityResourceUpdateDto.Emphasize;
                identityResource.ShowInDiscoveryDocument = identityResourceUpdateDto.ShowInDiscoveryDocument;
                identityResource.NonEditable             = identityResourceUpdateDto.NonEditable;

                List <IdentityResourceClaim> identityResourceClaims = new List <IdentityResourceClaim>();
                foreach (var item in identityResourceUpdateDto.UserClaims)
                {
                    identityResourceClaims.Add(new IdentityResourceClaim
                    {
                        Type = item.Type
                    });
                }
                identityResource.UserClaims = identityResourceClaims;

                List <IdentityResourceProperty> identityResourceProperties = new List <IdentityResourceProperty>();
                foreach (var item in identityResourceUpdateDto.Properties)
                {
                    identityResourceProperties.Add(new IdentityResourceProperty
                    {
                        Key   = item.Key,
                        Value = item.Value,
                    });
                }
                identityResource.Properties = identityResourceProperties;

                _userDatabaseContext.IdentityResources.Update(identityResource);
                await _userDatabaseContext.SaveChangesAsync();

                return(new ResultModel(ResultCode.Success, "更新认证资源成功"));
            }
            catch (Exception ex)
            {
                return(new ResultModel(ResultCode.Fail, ex.Message));
            }
        }
Exemple #2
0
 public async Task <IActionResult> UpdateIdentityResource([FromBody] IdentityResourceUpdateDto dto)
 {
     return(Json(await _identityResourceService.UpdateIdentityResource(dto)));
 }