public virtual async Task <int> AddApiSecretAsync(int apiResourceId, ApiResourceSecret apiSecret)
        {
            apiSecret.ApiResource = await DbContext.ApiResources.Where(x => x.Id == apiResourceId).SingleOrDefaultAsync();

            await DbContext.ApiSecrets.AddAsync(apiSecret);

            return(await AutoSaveChangesAsync());
        }
        public virtual async Task <int> DeleteApiSecretAsync(ApiResourceSecret apiSecret)
        {
            var apiSecretToDelete = await DbContext.ApiSecrets.Where(x => x.Id == apiSecret.Id).SingleOrDefaultAsync();

            DbContext.ApiSecrets.Remove(apiSecretToDelete);

            return(await AutoSaveChangesAsync());
        }
        public async Task <IActionResult> OnGetAsync(int apiResourceId, int id)
        {
            TenantId      = _sessionTenantAccessor.TenantId;
            ApiResourceId = apiResourceId;
            SecretId      = id;
            Secret        = await _adminServices.GetApiResourceSecretByIdAsync(TenantId, ApiResourceId, SecretId);

            if (Secret == null)
            {
                return(RedirectToPage("./Index", new { id = ApiResourceId }));
            }
            return(Page());
        }
 public static SecretModel FromEntity(ApiResourceSecret secret)
 {
     return(new SecretModel
     {
         Id = secret.Id,
         Description = secret.Description,
         Value = secret.Value,
         Expiration = secret.Expiration,
         Type = secret.Type,
         Created = secret.Created,
         ApiResourceId = secret.ApiResource.Id,
         ApiResourceName = secret.ApiResource.Name,
     });
 }
        public async Task <IActionResult> UpdateApiResource(MApiResourceDto dto)
        {
            var resourceInDB = await ApiResourcesService.GetApiResourceAsync(dto.Id);

            var secrets    = resourceInDB.Secrets.ToDictionary(sec => sec.Id, sec => sec);
            var newSecrets = new List <ApiResourceSecret>();

            foreach (var dtoSecret in dto.Secrets)
            {
                ApiResourceSecret sec = null;
                if (dtoSecret.Id != Guid.Empty)
                {
                    sec = secrets[dtoSecret.Id];
                    if (sec.Description != dtoSecret.Description)
                    {
                        sec.Description = dtoSecret.Description;
                    }

                    if (sec.Expiration != dtoSecret.Expiration)
                    {
                        sec.Expiration = dtoSecret.Expiration;
                    }
                }
                else
                {
                    dtoSecret.Value = dtoSecret.Value.ToSha512();
                    sec             = _mapper.Map <ApiResourceSecret>(dtoSecret);
                }

                if (sec != null)
                {
                    newSecrets.Add(sec);
                }
            }

            var updated = _mapper.Map(dto, resourceInDB);

            updated.Secrets = newSecrets;

            await ApiResourcesService.UpdateApiResourceAsync(updated);

            return(Ok());
        }
        public IActionResult Secrets(SecretsModel model)
        {
            var api = _configurationDbContext.ApiResources
                      .Include(x => x.Secrets)
                      .FirstOrDefault(x => x.Id == model.ApiResourceId);

            var secret = new ApiResourceSecret
            {
                Created = DateTime.UtcNow,
            };

            model.HashSecret();
            model.UpdateEntity(secret);
            api.Secrets.Add(secret);

            _configurationDbContext.SaveChanges();

            return(RedirectToAction(nameof(Secrets), new { id = api.Id }));
        }
        public async Task <IActionResult> OnPostAsync()
        {
            try
            {
                DateTime expiration = DateTime.UtcNow;
                switch (Input.SecretExpiration)
                {
                case SecretModel.ExpirationTypes.Never:
                    expiration = expiration.AddYears(100);
                    break;

                case SecretModel.ExpirationTypes.ExpireIt:
                    expiration = expiration.AddYears(-100);
                    break;

                case SecretModel.ExpirationTypes.OneYear:
                    expiration = expiration.AddYears(1);
                    break;
                }

                var secret = new ApiResourceSecret()
                {
                    Type        = IdentityServerConstants.SecretTypes.SharedSecret,
                    Expiration  = expiration,
                    Description = Input.Value.Mask(4, '*'),
                    Value       = Input.Value.Sha256()
                };


                await _adminServices.UpsertApiResourceSecretAsync(TenantId, ApiResourceId, secret);
            }
            catch (Exception ex)
            {
                ModelState.AddModelError(string.Empty, ex.Message);
                return(Page());
            }

            return(RedirectToPage("./Index", new { id = ApiResourceId }));
        }
Exemple #8
0
        public override async Task <ActionResult <InsertApiResourceSecretResponse> > HandleAsync(
            InsertApiResourceSecretRequest request,
            CancellationToken cancellationToken = default)
        {
            var toaster    = new ToasterEvent(nameof(ApiResourceSecret), ToasterType.Success, ToasterVerbs.Created);
            var validation =
                await _validator
                .ValidateAsync <InsertApiResourceSecretRequest, InsertApiResourceSecretResponse,
                                InsertApiResourceSecretRequestValidator>
                    (request, toaster, cancellationToken);

            if (validation.Failed)
            {
                return(validation.Response);
            }

            if (_repository.Query().Any(e => e.Value == request.Value && e.Type != AppConstants.SecretTypes.VisibleOneTime))
            {
                return(AspExtensions.GetBadRequestWithError <InsertApiResourceSecretResponse>("This secret already exists."));
            }

            var entity = new ApiResourceSecret
            {
                Created       = DateTime.UtcNow,
                Description   = request.Description,
                Type          = request.Type,
                Expiration    = request.Expiration,
                Value         = request.Value.Stamp(),
                ApiResourceId = request.OwnerId
            };

            await _repository.InsertAsync(entity);

            await _repository.SaveAsync(toaster);

            return(validation.Response);
        }
Exemple #9
0
 public static ApiResourceSecretModel ToModel(this ApiResourceSecret secret)
 {
     return(Mapper.Map <ApiResourceSecretModel>(secret));
 }
 public static ApiSecretsDto ToModel(this ApiResourceSecret resource)
 {
     return(resource == null ? null : Mapper.Map <ApiSecretsDto>(resource));
 }
Exemple #11
0
 public async Task <bool> DeleteApiResourceSecret(ApiResourceSecret apiResourceSecret)
 {
     return(await _repository.DeleteAsync(apiResourceSecret));
 }
Exemple #12
0
 public async Task <int> InsertApiResourceSecret(ApiResourceSecret apiResourceSecret)
 {
     return(await _repository.InsertAsync(apiResourceSecret));
 }