public void UpdateApiResource(int id, ApiResourceDto apiResourceDto)
        {
            ApiResource apiResource = this.Session.Get <ApiResource>(id);

            apiResource = apiResourceDto.ToEntity(apiResource);
            if (!CanInsertApiResource(apiResource))
            {
                throw new FluentValidationException("ApiResource名称重复。");
            }
            var transaction = this.Session.BeginTransaction();

            try
            {
                this.Session.Update(apiResource);

                this.Session.CreateQuery("delete from ApiClaim where ApiResourceId=:ApiResourceId")
                .SetInt32("ApiResourceId", id)
                .ExecuteUpdate();

                apiResourceDto.UserClaims.ForEach(type =>
                {
                    ApiClaim apiClaim      = new ApiClaim();
                    apiClaim.ApiResourceId = apiResource.Id;
                    apiClaim.Type          = type;
                    this.Session.Save(apiClaim);
                });
                transaction.Commit();
            }
            catch (Exception ex)
            {
                transaction.Rollback();
                throw ex;
            }
        }
        public void AddApiResource(ApiResourceDto apiResourceDto)
        {
            ApiResource apiResource = apiResourceDto.ToEntity();

            if (!CanInsertApiResource(apiResource))
            {
                throw new FluentValidationException("ApiResource名称重复。");
            }
            var transaction = this.Session.BeginTransaction();

            try
            {
                this.Session.Save(apiResource);
                apiResourceDto.UserClaims.ForEach(type =>
                {
                    ApiClaim apiClaim      = new ApiClaim();
                    apiClaim.ApiResourceId = apiResource.Id;
                    apiClaim.Type          = type;
                    this.Session.Save(apiClaim);
                });
                transaction.Commit();
            }
            catch (Exception ex)
            {
                transaction.Rollback();
                throw ex;
            }
        }
Пример #3
0
        public async Task <ApiResponse> CreateApiResourceAsync(ApiResourceDto apiResourceDto)
        {
            var apiResource = apiResourceDto.ToEntity();
            await _configurationDbContext.ApiResources.AddAsync(apiResource);

            await _configurationDbContext.SaveChangesAsync();

            return(new ApiResponse(Status200OK, L["API Resource {0} created", apiResourceDto.Name], apiResourceDto));
        }
Пример #4
0
        public virtual async Task <int> DeleteApiResourceAsync(ApiResourceDto apiResource)
        {
            var resource = apiResource.ToEntity();

            var deleted = await ApiResourceRepository.DeleteApiResourceAsync(resource);

            await AuditEventLogger.LogEventAsync(new ApiResourceDeletedEvent(apiResource));

            return(deleted);
        }
Пример #5
0
        /// <summary>
        /// 修改Api资源
        /// </summary>
        /// <param name="dto">Api资源参数</param>
        public async Task UpdateAsync(ApiResourceDto dto)
        {
            var entity = dto.ToEntity();

            await ValidateUpdateAsync(entity);

            await ApiResourceRepository.UpdateAsync(entity);

            await UnitOfWork.CommitAsync();
        }
Пример #6
0
        public async Task <int> UpdateApiResourceAsync(ApiResourceDto apiResource)
        {
            var canInsert = await CanInsertApiResourceAsync(apiResource);

            if (!canInsert)
            {
                throw new UserFriendlyViewException(string.Format(_apiResourceServiceResources.ApiResourceExistsValue().Description, apiResource.Name), _apiResourceServiceResources.ApiResourceExistsKey().Description, apiResource);
            }

            var resource = apiResource.ToEntity();

            return(await _apiResourceRepository.UpdateApiResourceAsync(resource));
        }
Пример #7
0
        /// <summary>
        /// 创建Api资源
        /// </summary>
        /// <param name="dto">Api资源参数</param>
        public async Task <Guid> CreateAsync(ApiResourceDto dto)
        {
            var entity = dto.ToEntity();

            await ValidateCreateAsync(entity);

            entity.Init();
            await ApiResourceRepository.AddAsync(entity);

            await UnitOfWork.CommitAsync();

            return(entity.Id);
        }
Пример #8
0
        public virtual async Task <int> AddApiResourceAsync(ApiResourceDto apiResource)
        {
            var canInsert = await CanInsertApiResourceAsync(apiResource);

            if (!canInsert)
            {
                throw new UserFriendlyViewException(string.Format(ApiResourceServiceResources.ApiResourceExistsValue().Description, apiResource.Name), ApiResourceServiceResources.ApiResourceExistsKey().Description, apiResource);
            }

            var resource = apiResource.ToEntity();

            var added = await ApiResourceRepository.AddApiResourceAsync(resource);

            await AuditEventLogger.LogEventAsync(new ApiResourceAddedEvent(apiResource));

            return(added);
        }
Пример #9
0
        public async Task <ApiResponse> UpdateApiResourceAsync(ApiResourceDto apiResourceDto)
        {
            //Name is not the primary key, but a unique index and ApiResourceDto does not contain the real key Id.
            //So in UI I have to use Name as a key and I make it read only.
            var apiResource = await _configurationDbContext.ApiResources.SingleOrDefaultAsync(i => i.Name == apiResourceDto.Name);

            if (apiResource == null)
            {
                return(new ApiResponse(Status400BadRequest, L["The API resource {0} doesn't exist", apiResourceDto.Name]));
            }

            _configurationDbContext.ApiResources.Remove(apiResource);

            _configurationDbContext.ApiResources.Add(apiResourceDto.ToEntity());
            await _configurationDbContext.SaveChangesAsync();

            return(new ApiResponse(Status200OK, L["API Resource {0} updated", apiResourceDto.Name], apiResourceDto));
        }
Пример #10
0
        public virtual async Task <bool> CanInsertApiResourceAsync(ApiResourceDto apiResource)
        {
            var resource = apiResource.ToEntity();

            return(await ApiResourceRepository.CanInsertApiResourceAsync(resource));
        }
Пример #11
0
        public async Task <int> DeleteApiResourceAsync(ApiResourceDto apiResource)
        {
            var resource = apiResource.ToEntity();

            return(await _apiResourceRepository.DeleteApiResourceAsync(resource));
        }