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