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))); }
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))); }