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/Account/CreateAccountRoute.cs10
-rw-r--r--code/api/src/Endpoints/Internal/Account/CreateInitialAccountRoute.cs2
-rw-r--r--code/api/src/Endpoints/Internal/Account/LoginRoute.cs4
-rw-r--r--code/api/src/Endpoints/Internal/Account/UpdateAccountRoute.cs2
-rw-r--r--code/api/src/Endpoints/Internal/PasswordResetRequests/CreateResetRequestRoute.cs2
-rw-r--r--code/api/src/Endpoints/Internal/PasswordResetRequests/FulfillResetRequestRoute.cs2
-rw-r--r--code/api/src/Endpoints/Internal/Root/ValidateRoute.cs28
-rw-r--r--code/api/src/Endpoints/V1/Customers/CreateCustomerRoute.cs2
-rw-r--r--code/api/src/Endpoints/V1/Projects/CreateProjectRoute.cs2
9 files changed, 28 insertions, 26 deletions
diff --git a/code/api/src/Endpoints/Internal/Account/CreateAccountRoute.cs b/code/api/src/Endpoints/Internal/Account/CreateAccountRoute.cs
index c114bb8..a145c38 100644
--- a/code/api/src/Endpoints/Internal/Account/CreateAccountRoute.cs
+++ b/code/api/src/Endpoints/Internal/Account/CreateAccountRoute.cs
@@ -1,5 +1,3 @@
-using Microsoft.Extensions.Localization;
-
namespace IOL.GreatOffice.Api.Endpoints.Internal.Account;
public class CreateAccountRoute : RouteBaseAsync.WithRequest<CreateAccountRoute.Payload>.WithActionResult
@@ -7,11 +5,13 @@ public class CreateAccountRoute : RouteBaseAsync.WithRequest<CreateAccountRoute.
private readonly MainAppDatabase _database;
private readonly UserService _userService;
private readonly IStringLocalizer<SharedResources> _localizer;
+ private readonly EmailValidationService _emailValidation;
- public CreateAccountRoute(UserService userService, MainAppDatabase database, IStringLocalizer<SharedResources> localizer) {
+ public CreateAccountRoute(UserService userService, MainAppDatabase database, IStringLocalizer<SharedResources> localizer, EmailValidationService emailValidation) {
_userService = userService;
_database = database;
_localizer = localizer;
+ _emailValidation = emailValidation;
}
public class Payload
@@ -45,8 +45,8 @@ public class CreateAccountRoute : RouteBaseAsync.WithRequest<CreateAccountRoute.
user.HashAndSetPassword(request.Password);
_database.Users.Add(user);
await _database.SaveChangesAsync(cancellationToken);
- await _userService.LogInUser(HttpContext, user);
- Task.Run(() => _userService.SendValidationEmail(user), cancellationToken);
+ await _userService.LogInUserAsync(HttpContext, user);
+ await _emailValidation.SendValidationEmailAsync(user);
return Ok();
}
} \ No newline at end of file
diff --git a/code/api/src/Endpoints/Internal/Account/CreateInitialAccountRoute.cs b/code/api/src/Endpoints/Internal/Account/CreateInitialAccountRoute.cs
index 56ff9c6..01cad3f 100644
--- a/code/api/src/Endpoints/Internal/Account/CreateInitialAccountRoute.cs
+++ b/code/api/src/Endpoints/Internal/Account/CreateInitialAccountRoute.cs
@@ -26,7 +26,7 @@ public class CreateInitialAccountRoute : RouteBaseAsync.WithoutRequest.WithActio
user.HashAndSetPassword("ivar123");
_database.Users.Add(user);
await _database.SaveChangesAsync(cancellationToken);
- await _userService.LogInUser(HttpContext, user);
+ await _userService.LogInUserAsync(HttpContext, user);
return Redirect("/");
}
} \ No newline at end of file
diff --git a/code/api/src/Endpoints/Internal/Account/LoginRoute.cs b/code/api/src/Endpoints/Internal/Account/LoginRoute.cs
index eaebc2a..8a3dff4 100644
--- a/code/api/src/Endpoints/Internal/Account/LoginRoute.cs
+++ b/code/api/src/Endpoints/Internal/Account/LoginRoute.cs
@@ -1,5 +1,3 @@
-using Microsoft.Extensions.Localization;
-
namespace IOL.GreatOffice.Api.Endpoints.Internal.Account;
public class LoginRoute : RouteBaseAsync.WithRequest<LoginRoute.Payload>.WithActionResult
@@ -29,7 +27,7 @@ public class LoginRoute : RouteBaseAsync.WithRequest<LoginRoute.Payload>.WithAct
return KnownProblem(_localizer["Invalid username or password"]);
}
- await _userService.LogInUser(HttpContext, user, request.Persist);
+ await _userService.LogInUserAsync(HttpContext, user, request.Persist);
return Ok();
}
} \ No newline at end of file
diff --git a/code/api/src/Endpoints/Internal/Account/UpdateAccountRoute.cs b/code/api/src/Endpoints/Internal/Account/UpdateAccountRoute.cs
index c75e750..1081240 100644
--- a/code/api/src/Endpoints/Internal/Account/UpdateAccountRoute.cs
+++ b/code/api/src/Endpoints/Internal/Account/UpdateAccountRoute.cs
@@ -1,5 +1,3 @@
-using Microsoft.Extensions.Localization;
-
namespace IOL.GreatOffice.Api.Endpoints.Internal.Account;
public class UpdateAccountRoute : RouteBaseAsync.WithRequest<UpdateAccountRoute.Payload>.WithActionResult
diff --git a/code/api/src/Endpoints/Internal/PasswordResetRequests/CreateResetRequestRoute.cs b/code/api/src/Endpoints/Internal/PasswordResetRequests/CreateResetRequestRoute.cs
index 9a22ab3..c6ed417 100644
--- a/code/api/src/Endpoints/Internal/PasswordResetRequests/CreateResetRequestRoute.cs
+++ b/code/api/src/Endpoints/Internal/PasswordResetRequests/CreateResetRequestRoute.cs
@@ -1,5 +1,3 @@
-using Microsoft.Extensions.Localization;
-
namespace IOL.GreatOffice.Api.Endpoints.Internal.PasswordResetRequests;
public class CreateResetRequestRoute : RouteBaseAsync.WithRequest<CreateResetRequestRoute.Payload>.WithActionResult
diff --git a/code/api/src/Endpoints/Internal/PasswordResetRequests/FulfillResetRequestRoute.cs b/code/api/src/Endpoints/Internal/PasswordResetRequests/FulfillResetRequestRoute.cs
index 8c7ce03..a8797b8 100644
--- a/code/api/src/Endpoints/Internal/PasswordResetRequests/FulfillResetRequestRoute.cs
+++ b/code/api/src/Endpoints/Internal/PasswordResetRequests/FulfillResetRequestRoute.cs
@@ -1,5 +1,3 @@
-using Microsoft.Extensions.Localization;
-
namespace IOL.GreatOffice.Api.Endpoints.Internal.PasswordResetRequests;
public class FulfillResetRequestRoute : RouteBaseAsync.WithRequest<FulfillResetRequestRoute.Payload>.WithActionResult
diff --git a/code/api/src/Endpoints/Internal/Root/ValidateRoute.cs b/code/api/src/Endpoints/Internal/Root/ValidateRoute.cs
index 428a1a2..8f0882d 100644
--- a/code/api/src/Endpoints/Internal/Root/ValidateRoute.cs
+++ b/code/api/src/Endpoints/Internal/Root/ValidateRoute.cs
@@ -2,13 +2,15 @@ namespace IOL.GreatOffice.Api.Endpoints.Internal.Root;
public class ValidateRoute : RouteBaseSync.WithRequest<ValidateRoute.QueryParams>.WithActionResult
{
- private readonly UserService _userService;
- private readonly string _continueTo;
+ private readonly EmailValidationService _emailValidation;
+ private readonly string CanonicalFrontendUrl;
+ private readonly ILogger<ValidateRoute> _logger;
- public ValidateRoute(UserService userService, VaultService vaultService) {
- _userService = userService;
+ public ValidateRoute(VaultService vaultService, EmailValidationService emailValidation, ILogger<ValidateRoute> logger) {
+ _emailValidation = emailValidation;
+ _logger = logger;
var c = vaultService.GetCurrentAppConfiguration();
- _continueTo = c.CANONICAL_FRONTEND_URL + "/portal?msg=emailValidated";
+ CanonicalFrontendUrl = c.CANONICAL_FRONTEND_URL;
}
public class QueryParams
@@ -19,7 +21,19 @@ public class ValidateRoute : RouteBaseSync.WithRequest<ValidateRoute.QueryParams
[HttpGet("~/_/validate")]
public override ActionResult Handle([FromQuery] QueryParams request) {
- _userService.FulfillEmailValidationRequest(request.Id, LoggedInUser.Id);
- return Redirect(_continueTo);
+ var isFulfilled = _emailValidation.FulfillEmailValidationRequest(request.Id, LoggedInUser.Id);
+ if (!isFulfilled) {
+ _logger.LogError("Email validation fulfillment failed for request {requestId} and user {userId}", request.Id, LoggedInUser.Id);
+ return StatusCode(400, $"""
+<html>
+<body>
+<h3>The validation could not be completed</h3>
+<p>We are working on fixing this, in the meantime, have patience.</p>
+<a href="{CanonicalFrontendUrl}">Click here to go back to {CanonicalFrontendUrl}</a>
+</body>
+""");
+ }
+
+ return Redirect(CanonicalFrontendUrl + "/portal?msg=emailValidated");
}
} \ No newline at end of file
diff --git a/code/api/src/Endpoints/V1/Customers/CreateCustomerRoute.cs b/code/api/src/Endpoints/V1/Customers/CreateCustomerRoute.cs
index b20b404..e58aa37 100644
--- a/code/api/src/Endpoints/V1/Customers/CreateCustomerRoute.cs
+++ b/code/api/src/Endpoints/V1/Customers/CreateCustomerRoute.cs
@@ -1,5 +1,3 @@
-using Microsoft.Extensions.Localization;
-
namespace IOL.GreatOffice.Api.Endpoints.V1.Customers;
public class CreateCustomerRoute : RouteBaseAsync.WithRequest<CreateCustomerPayload>.WithActionResult
diff --git a/code/api/src/Endpoints/V1/Projects/CreateProjectRoute.cs b/code/api/src/Endpoints/V1/Projects/CreateProjectRoute.cs
index 04a3a9a..795422a 100644
--- a/code/api/src/Endpoints/V1/Projects/CreateProjectRoute.cs
+++ b/code/api/src/Endpoints/V1/Projects/CreateProjectRoute.cs
@@ -1,5 +1,3 @@
-using Microsoft.Extensions.Localization;
-
namespace IOL.GreatOffice.Api.Endpoints.V1.Projects;
public class CreateProjectRoute : RouteBaseAsync.WithRequest<CreateProjectPayload>.WithActionResult