aboutsummaryrefslogtreecommitdiffstats
path: root/code/api/src/Endpoints/Internal/Account/LoginRoute.cs
diff options
context:
space:
mode:
Diffstat (limited to 'code/api/src/Endpoints/Internal/Account/LoginRoute.cs')
-rw-r--r--code/api/src/Endpoints/Internal/Account/LoginRoute.cs29
1 files changed, 15 insertions, 14 deletions
diff --git a/code/api/src/Endpoints/Internal/Account/LoginRoute.cs b/code/api/src/Endpoints/Internal/Account/LoginRoute.cs
index 696c3c2..eaebc2a 100644
--- a/code/api/src/Endpoints/Internal/Account/LoginRoute.cs
+++ b/code/api/src/Endpoints/Internal/Account/LoginRoute.cs
@@ -1,31 +1,32 @@
+using Microsoft.Extensions.Localization;
+
namespace IOL.GreatOffice.Api.Endpoints.Internal.Account;
-public class LoginRoute : RouteBaseAsync.WithRequest<LoginPayload>.WithActionResult
+public class LoginRoute : RouteBaseAsync.WithRequest<LoginRoute.Payload>.WithActionResult
{
private readonly MainAppDatabase _database;
private readonly UserService _userService;
+ private readonly IStringLocalizer<SharedResources> _localizer;
- public LoginRoute(MainAppDatabase database, UserService userService) {
+ public LoginRoute(MainAppDatabase database, UserService userService, IStringLocalizer<SharedResources> localizer) {
_database = database;
_userService = userService;
+ _localizer = localizer;
+ }
+
+ public class Payload
+ {
+ public string Username { get; set; }
+ public string Password { get; set; }
+ public bool Persist { get; set; }
}
- /// <summary>
- /// Login a user.
- /// </summary>
- /// <param name="request"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
[AllowAnonymous]
[HttpPost("~/_/account/login")]
- public override async Task<ActionResult> HandleAsync(LoginPayload request, CancellationToken cancellationToken = default) {
- if (!ModelState.IsValid) {
- return BadRequest(ModelState);
- }
-
+ public override async Task<ActionResult> HandleAsync(Payload request, CancellationToken cancellationToken = default) {
var user = _database.Users.SingleOrDefault(u => u.Username == request.Username);
if (user == default || !user.VerifyPassword(request.Password)) {
- return BadRequest(new KnownProblemModel("Invalid username or password"));
+ return KnownProblem(_localizer["Invalid username or password"]);
}
await _userService.LogInUser(HttpContext, user, request.Persist);