aboutsummaryrefslogtreecommitdiffstats
path: root/code/api/src/Endpoints/Internal/Account/LoginRoute.cs
diff options
context:
space:
mode:
authorivarlovlie <git@ivarlovlie.no>2022-11-14 05:25:12 +0100
committerivarlovlie <git@ivarlovlie.no>2022-11-14 05:25:12 +0100
commit99b0c09a6bb984d811b63788015cfad1855b5f3c (patch)
tree8b6c3c9b70384bd3f00a46945e8bcb5bd474b3a1 /code/api/src/Endpoints/Internal/Account/LoginRoute.cs
parent798895a91f8533f22f94f4c4800dc9a2c9628ab6 (diff)
downloadgreatoffice-99b0c09a6bb984d811b63788015cfad1855b5f3c.tar.xz
greatoffice-99b0c09a6bb984d811b63788015cfad1855b5f3c.zip
refactor: Endpoints
- Model payloads in relevant route class - Move RequestTimeZoneInfo out of EndpointBase
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);