aboutsummaryrefslogtreecommitdiffstats
path: root/code/api/src/Endpoints
diff options
context:
space:
mode:
Diffstat (limited to 'code/api/src/Endpoints')
-rw-r--r--code/api/src/Endpoints/Internal/Root/ReadConfigurationRoute.cs8
-rw-r--r--code/api/src/Endpoints/Internal/Root/RefreshConfigurationRoute.cs15
-rw-r--r--code/api/src/Endpoints/Internal/Root/ValidateRoute.cs12
-rw-r--r--code/api/src/Endpoints/V1/ApiTokens/CreateTokenRoute.cs21
4 files changed, 21 insertions, 35 deletions
diff --git a/code/api/src/Endpoints/Internal/Root/ReadConfigurationRoute.cs b/code/api/src/Endpoints/Internal/Root/ReadConfigurationRoute.cs
index a02dbb8..14a4186 100644
--- a/code/api/src/Endpoints/Internal/Root/ReadConfigurationRoute.cs
+++ b/code/api/src/Endpoints/Internal/Root/ReadConfigurationRoute.cs
@@ -2,18 +2,14 @@ namespace IOL.GreatOffice.Api.Endpoints.Internal.Root;
public class ReadConfigurationRoute : RouteBaseSync.WithoutRequest.WithActionResult
{
- private readonly VaultService _vaultService;
-
- public ReadConfigurationRoute(VaultService vaultService)
+ public ReadConfigurationRoute()
{
- _vaultService = vaultService;
}
[AllowAnonymous]
[HttpGet("~/_/configuration")]
public override ActionResult Handle()
{
- var config = _vaultService.GetCurrentAppConfiguration();
- return Content(JsonSerializer.Serialize(config.GetPublicObject()), "application/json");
+ return Content(JsonSerializer.Serialize(Program.AppConfiguration.GetPublicObject()), "application/json");
}
} \ No newline at end of file
diff --git a/code/api/src/Endpoints/Internal/Root/RefreshConfigurationRoute.cs b/code/api/src/Endpoints/Internal/Root/RefreshConfigurationRoute.cs
deleted file mode 100644
index 2bbfd8f..0000000
--- a/code/api/src/Endpoints/Internal/Root/RefreshConfigurationRoute.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-namespace IOL.GreatOffice.Api.Endpoints.Internal.Root;
-
-public class RefreshConfigurationRoute : RouteBaseAsync.WithoutRequest.WithoutResult
-{
- private readonly VaultService _vaultService;
-
- public RefreshConfigurationRoute(VaultService vaultService) {
- _vaultService = vaultService;
- }
-
- [HttpGet("~/_/refresh-configuration")]
- public override async Task HandleAsync(CancellationToken cancellationToken = default) {
- await _vaultService.RefreshCurrentAppConfigurationAsync();
- }
-} \ No newline at end of file
diff --git a/code/api/src/Endpoints/Internal/Root/ValidateRoute.cs b/code/api/src/Endpoints/Internal/Root/ValidateRoute.cs
index 8f0882d..d8ec85a 100644
--- a/code/api/src/Endpoints/Internal/Root/ValidateRoute.cs
+++ b/code/api/src/Endpoints/Internal/Root/ValidateRoute.cs
@@ -6,11 +6,11 @@ public class ValidateRoute : RouteBaseSync.WithRequest<ValidateRoute.QueryParams
private readonly string CanonicalFrontendUrl;
private readonly ILogger<ValidateRoute> _logger;
- public ValidateRoute(VaultService vaultService, EmailValidationService emailValidation, ILogger<ValidateRoute> logger) {
+ public ValidateRoute(EmailValidationService emailValidation, ILogger<ValidateRoute> logger)
+ {
_emailValidation = emailValidation;
_logger = logger;
- var c = vaultService.GetCurrentAppConfiguration();
- CanonicalFrontendUrl = c.CANONICAL_FRONTEND_URL;
+ CanonicalFrontendUrl = Program.AppConfiguration.CANONICAL_FRONTEND_URL;
}
public class QueryParams
@@ -20,9 +20,11 @@ public class ValidateRoute : RouteBaseSync.WithRequest<ValidateRoute.QueryParams
}
[HttpGet("~/_/validate")]
- public override ActionResult Handle([FromQuery] QueryParams request) {
+ public override ActionResult Handle([FromQuery] QueryParams request)
+ {
var isFulfilled = _emailValidation.FulfillEmailValidationRequest(request.Id, LoggedInUser.Id);
- if (!isFulfilled) {
+ if (!isFulfilled)
+ {
_logger.LogError("Email validation fulfillment failed for request {requestId} and user {userId}", request.Id, LoggedInUser.Id);
return StatusCode(400, $"""
<html>
diff --git a/code/api/src/Endpoints/V1/ApiTokens/CreateTokenRoute.cs b/code/api/src/Endpoints/V1/ApiTokens/CreateTokenRoute.cs
index 163ddb6..c28f534 100644
--- a/code/api/src/Endpoints/V1/ApiTokens/CreateTokenRoute.cs
+++ b/code/api/src/Endpoints/V1/ApiTokens/CreateTokenRoute.cs
@@ -5,12 +5,11 @@ namespace IOL.GreatOffice.Api.Endpoints.V1.ApiTokens;
public class CreateTokenRoute : RouteBaseSync.WithRequest<CreateTokenRoute.Payload>.WithActionResult
{
private readonly MainAppDatabase _database;
- private readonly AppConfiguration _configuration;
private readonly ILogger<CreateTokenRoute> _logger;
- public CreateTokenRoute(MainAppDatabase database, VaultService vaultService, ILogger<CreateTokenRoute> logger) {
+ public CreateTokenRoute(MainAppDatabase database, ILogger<CreateTokenRoute> logger)
+ {
_database = database;
- _configuration = vaultService.GetCurrentAppConfiguration();
_logger = logger;
}
@@ -30,19 +29,23 @@ public class CreateTokenRoute : RouteBaseSync.WithRequest<CreateTokenRoute.Paylo
/// <returns></returns>
[ApiVersion(ApiSpecV1.VERSION_STRING)]
[HttpPost("~/v{version:apiVersion}/api-tokens/create")]
- public override ActionResult Handle(Payload request) {
+ public override ActionResult Handle(Payload request)
+ {
var user = _database.Users.SingleOrDefault(c => c.Id == LoggedInUser.Id);
- if (user == default) {
+ if (user == default)
+ {
return NotFound(new KnownProblemModel("User does not exist"));
}
- var token_entropy = _configuration.APP_AES_KEY;
- if (token_entropy.IsNullOrWhiteSpace()) {
+ var tokenEntropy = Program.AppConfiguration.APP_AES_KEY;
+ if (tokenEntropy.IsNullOrWhiteSpace())
+ {
_logger.LogWarning("No token entropy is available, Basic auth is disabled");
return NotFound();
}
- var accessToken = new ApiAccessToken() {
+ var accessToken = new ApiAccessToken()
+ {
User = user,
ExpiryDate = request.ExpiryDate.ToUniversalTime(),
AllowCreate = request.AllowCreate,
@@ -53,6 +56,6 @@ public class CreateTokenRoute : RouteBaseSync.WithRequest<CreateTokenRoute.Paylo
_database.AccessTokens.Add(accessToken);
_database.SaveChanges();
- return Ok(Convert.ToBase64String(Encoding.UTF8.GetBytes(accessToken.Id.ToString().EncryptWithAes(token_entropy))));
+ return Ok(Convert.ToBase64String(Encoding.UTF8.GetBytes(accessToken.Id.ToString().EncryptWithAes(tokenEntropy))));
}
} \ No newline at end of file