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)));
        }
Esempio n. 2
0
 private static ApiKeyData FromModel(APIKeyData data)
 {
     return(new ApiKeyData()
     {
         Permissions = Permission.ToPermissions(data.GetBlob().Permissions).ToArray(),
         ApiKey = data.Id,
         Label = data.Label ?? string.Empty
     });
 }
Esempio n. 3
0
 private static ApiKeyData FromModel(APIKeyData data)
 {
     return(new ApiKeyData()
     {
         Permissions = data.GetPermissions(),
         ApiKey = data.Id,
         UserId = data.UserId,
         Label = data.Label
     });
 }
Esempio n. 4
0
        private string GetRedirectToApplicationUrl(Uri redirect, APIKeyData key)
        {
            var uri         = new UriBuilder(redirect);
            var permissions = key.GetBlob().Permissions;

            BTCPayServerClient.AppendPayloadToQuery(uri,
                                                    new Dictionary <string, object>()
            {
                { "key", key.Id }, { "permissions", permissions }, { "user", key.UserId }
            });
            return(uri.Uri.AbsoluteUri);
        }
        public async Task CreateKey(APIKeyData key)
        {
            if (key.Type == APIKeyType.Legacy || !string.IsNullOrEmpty(key.StoreId) || string.IsNullOrEmpty(key.UserId))
            {
                throw new InvalidOperationException("cannot save a bitpay legacy api key with this repository");
            }

            using var context = _applicationDbContextFactory.CreateContext();
            await context.ApiKeys.AddAsync(key);

            await context.SaveChangesAsync();
        }
        private async Task <APIKeyData> CreateKey(AddApiKeyViewModel viewModel)
        {
            var key = new APIKeyData()
            {
                Id     = Encoders.Hex.EncodeData(RandomUtils.GetBytes(20)),
                Type   = APIKeyType.Permanent,
                UserId = _userManager.GetUserId(User),
                Label  = viewModel.Label
            };

            key.SetPermissions(GetPermissionsFromViewModel(viewModel));
            await _apiKeyRepository.CreateKey(key);

            return(key);
        }
Esempio n. 7
0
        private async Task <APIKeyData> CreateKey(AddApiKeyViewModel viewModel)
        {
            var key = new APIKeyData()
            {
                Id     = Guid.NewGuid().ToString().Replace("-", string.Empty),
                Type   = APIKeyType.Permanent,
                UserId = _userManager.GetUserId(User),
                Label  = viewModel.Label
            };

            key.SetPermissions(GetPermissionsFromViewModel(viewModel));
            await _apiKeyRepository.CreateKey(key);

            return(key);
        }
Esempio n. 8
0
        private async Task <APIKeyData> CreateKey(AddApiKeyViewModel viewModel)
        {
            var key = new APIKeyData()
            {
                Id     = Encoders.Hex.EncodeData(RandomUtils.GetBytes(20)),
                Type   = APIKeyType.Permanent,
                UserId = _userManager.GetUserId(User),
                Label  = viewModel.Label
            };

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

            return(key);
        }
Esempio n. 9
0
        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)));
        }
Esempio n. 10
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)));
        }