1
1
using Microsoft . AspNetCore . Mvc ;
2
2
using OsmoDoc . API . Models ;
3
3
using OsmoDoc . API . Helpers ;
4
+ using OsmoDoc . Services ;
4
5
5
6
namespace OsmoDoc . API . Controllers ;
6
7
7
8
[ Route ( "api" ) ]
8
9
[ ApiController ]
9
10
public class LoginController : ControllerBase
10
11
{
12
+ private readonly IRedisTokenStoreService _tokenStoreSerivce ;
11
13
private readonly ILogger < LoginController > _logger ;
12
14
13
- public LoginController ( ILogger < LoginController > logger )
15
+ public LoginController ( IRedisTokenStoreService tokenStoreService , ILogger < LoginController > logger )
14
16
{
17
+ this . _tokenStoreSerivce = tokenStoreService ;
15
18
this . _logger = logger ;
16
19
}
17
20
@@ -23,6 +26,7 @@ public async Task<ActionResult<BaseResponse>> Login([FromBody] LoginRequestDTO l
23
26
try
24
27
{
25
28
string token = await Task . Run ( ( ) => AuthenticationHelper . JwtTokenGenerator ( loginRequest . Email ) ) ;
29
+ await this . _tokenStoreSerivce . StoreTokenAsync ( token , loginRequest . Email ) ;
26
30
27
31
response . Status = ResponseStatus . Success ;
28
32
response . AuthToken = token ;
@@ -38,4 +42,27 @@ public async Task<ActionResult<BaseResponse>> Login([FromBody] LoginRequestDTO l
38
42
return this . StatusCode ( StatusCodes . Status500InternalServerError , response ) ;
39
43
}
40
44
}
45
+
46
+ [ HttpPost ]
47
+ [ Route ( "revoke" ) ]
48
+ public async Task < ActionResult < BaseResponse > > RevokeToken ( [ FromBody ] RevokeTokenRequestDTO request )
49
+ {
50
+ BaseResponse response = new BaseResponse ( ResponseStatus . Fail ) ;
51
+ try
52
+ {
53
+ await this . _tokenStoreSerivce . RevokeTokenAsync ( request . Token ) ;
54
+
55
+ response . Status = ResponseStatus . Success ;
56
+ response . Message = "Token revoked" ;
57
+ return this . Ok ( response ) ;
58
+ }
59
+ catch ( Exception ex )
60
+ {
61
+ response . Status = ResponseStatus . Error ;
62
+ response . Message = ex . Message ;
63
+ this . _logger . LogError ( ex . Message ) ;
64
+ this . _logger . LogError ( ex . StackTrace ) ;
65
+ return this . StatusCode ( StatusCodes . Status500InternalServerError , response ) ;
66
+ }
67
+ }
41
68
}
0 commit comments