Ejemplo n.º 1
0
        public async Task <ActionResult <AccessKey> > GenerateAccessKey()
        {
            var userIdClaimValue = User.Claims
                                   .FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier)?.Value ?? "-1";

            if (int.TryParse(userIdClaimValue, out var userId))
            {
                try
                {
                    var newAccessKey = await _userService.AddAccessKey(userId).ConfigureAwait(false);

                    return(Ok(new
                    {
                        newAccessKey.Expiration,
                        newAccessKey.Key,
                        newAccessKey.State,
                        newAccessKey.IsActive
                    }));
                }
                catch (AccessKeyException e)
                {
                    return(StatusCode(500, new
                    {
                        ErrorMessage = "Error while generating new access key",
                        ErrorDetail = e.Message
                    }));
                }
                catch (Exception)
                {
                    return(StatusCode(500, new
                    {
                        ErrorMessage = "Error while generating new access key",
                        ErrorDetail = $"Internal Error. LogId: {HttpContext.TraceIdentifier}"
                    }));
                }
            }

            return(BadRequest(new { ErrorMessage = "Could not acquire user id from request" }));
        }