public async Task <IActionResult> CreateKey(CreateApiKeyRequest request)
        {
            if (request is null)
            {
                return(NotFound());
            }
            if (request.Permissions is null || request.Permissions.Length == 0)
            {
                ModelState.AddModelError(nameof(request.Permissions), "One or more permissions are required");
                return(this.CreateValidationError(ModelState));
            }
            var key = new APIKeyData()
            {
                Id     = Encoders.Hex.EncodeData(RandomUtils.GetBytes(20)),
                Type   = APIKeyType.Permanent,
                UserId = _userManager.GetUserId(User),
                Label  = request.Label
            };

            key.SetBlob(new APIKeyBlob()
            {
                Permissions = request.Permissions.Select(p => p.ToString()).Distinct().ToArray()
            });
            await _apiKeyRepository.CreateKey(key);

            return(Ok(FromModel(key)));
        }
        public async Task <ActionResult <ApiKeyData> > CreateKey(CreateApiKeyRequest request)
        {
            if (request is null)
            {
                return(BadRequest());
            }
            var key = new APIKeyData()
            {
                Id     = Encoders.Hex.EncodeData(RandomUtils.GetBytes(20)),
                Type   = APIKeyType.Permanent,
                UserId = _userManager.GetUserId(User),
                Label  = request.Label
            };

            key.Permissions = string.Join(";", request.Permissions.Select(p => p.ToString()).Distinct().ToArray());
            await _apiKeyRepository.CreateKey(key);

            return(Ok(FromModel(key)));
        }
Exemple #3
0
        public async Task <IActionResult> CreateKey(CreateApiKeyRequest request)
        {
            request ??= new CreateApiKeyRequest();
            request.Permissions ??= System.Array.Empty <Permission>();
            var key = new APIKeyData()
            {
                Id     = Encoders.Hex.EncodeData(RandomUtils.GetBytes(20)),
                Type   = APIKeyType.Permanent,
                UserId = _userManager.GetUserId(User),
                Label  = request.Label
            };

            key.SetBlob(new APIKeyBlob()
            {
                Permissions = request.Permissions.Select(p => p.ToString()).Distinct().ToArray()
            });
            await _apiKeyRepository.CreateKey(key);

            return(Ok(FromModel(key)));
        }