aboutsummaryrefslogtreecommitdiffstats
path: root/code/api/src/Endpoints/Internal/PasswordResetRequests/IsResetRequestValidRoute.cs
blob: 9c1deb8840181a4cd3bdd9e7c135b4b5409166e5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
namespace IOL.GreatOffice.Api.Endpoints.Internal.PasswordResetRequests;

public class IsResetRequestValidRoute : RouteBaseAsync.WithRequest<Guid>.WithActionResult<IsResetRequestValidRoute.ResponseModel>
{
    private readonly PasswordResetService _passwordResetService;

    public IsResetRequestValidRoute(PasswordResetService passwordResetService) {
        _passwordResetService = passwordResetService;
    }

    public class ResponseModel
    {
        public ResponseModel(bool isValid) {
            IsValid = isValid;
        }

        public bool IsValid { get; }
    }

    [AllowAnonymous]
    [HttpGet("~/_/password-reset-request/is-valid")]
    public override async Task<ActionResult<ResponseModel>> HandleAsync(Guid id, CancellationToken cancellationToken = default) {
        var request = await _passwordResetService.GetRequestAsync(id, cancellationToken);
        if (request == default) {
            return Ok(new ResponseModel(false));
        }

        return Ok(new ResponseModel(!request.IsExpired));
    }
}