1- using Microsoft . AspNetCore . Mvc ;
2- using System . Security . Cryptography ;
3- using System . Text ;
41using Asp . Versioning ;
2+ using Microsoft . AspNetCore . Mvc ;
3+ using Microsoft . AspNetCore . RateLimiting ;
54using TableMasterApi . DAL . Interfaces ;
65using TableMasterApi . Model ;
76using TableMasterApi . Service ;
@@ -24,76 +23,73 @@ public AuthController(IUserDAL userDAL, IAuthDAL authDAL, JwtService jwtService)
2423 _authDAL = authDAL ;
2524 }
2625
26+ [ EnableRateLimiting ( "AuthPolicy" ) ]
2727 [ HttpPost ]
2828 public async Task < ActionResult < LoginUserOut > > Login ( [ FromBody ] LoginUserIn loginUser )
2929 {
30- try
30+ if ( string . IsNullOrWhiteSpace ( loginUser . Email ) || string . IsNullOrWhiteSpace ( loginUser . Password ) )
3131 {
32- if ( loginUser == null || loginUser . Password == null || loginUser . Email == null )
33- {
34- return BadRequest ( ) ;
35- }
36-
37- var user = await _userDAL . GetUserByEmail ( loginUser . Email ) ;
38-
39- if ( user == null )
40- {
41- return StatusCode ( 404 , "Email non existant" ) ;
42- }
43-
44- var result = _authDAL . VerifyPassword ( user . Password , loginUser . Password ) ;
32+ return BadRequest ( ) ;
33+ }
4534
46- if ( ! result )
47- {
48- return StatusCode ( 404 , "Mot de passe incorecte" ) ;
49- }
35+ var user = await _userDAL . GetUserByEmail ( loginUser . Email ) ;
36+ if ( user == null )
37+ {
38+ return NotFound ( "Email non existant" ) ;
39+ }
5040
51- string refreshToken = _jwtService . GenerateRefreshToken ( ) ;
52- string hashedRefreshToken = _jwtService . HashToken ( refreshToken ) ;
41+ if ( ! _authDAL . VerifyPassword ( user . Password , loginUser . Password ) )
42+ {
43+ return NotFound ( "Mot de passe incorecte" ) ;
44+ }
5345
54- await _userDAL . SaveRefreshToken ( user . Id , hashedRefreshToken , DateTime . UtcNow . AddDays ( 30 ) ) ;
46+ var refreshToken = _jwtService . GenerateRefreshToken ( ) ;
47+ var hashedRefreshToken = _jwtService . HashToken ( refreshToken ) ;
5548
56- LoginUserOut loginUserOut = new LoginUserOut ( ) ;
57- loginUserOut . User = user ;
58- loginUserOut . AccessToken = _jwtService . GenerateAccessToken ( user . Id ) ;
59- loginUserOut . RefreshToken = refreshToken ;
60-
49+ await _userDAL . SaveRefreshToken ( user . Id , hashedRefreshToken , DateTime . UtcNow . AddDays ( 30 ) ) ;
6150
62- return Ok ( loginUserOut ) ;
63- }
64- catch ( Exception e )
51+ return Ok ( new LoginUserOut
6552 {
66- return StatusCode ( 500 , e . Message ) ;
67- }
53+ User = user . ToPublicUser ( ) ,
54+ AccessToken = _jwtService . GenerateAccessToken ( user . Id ) ,
55+ RefreshToken = refreshToken
56+ } ) ;
6857 }
6958
59+ [ EnableRateLimiting ( "AuthPolicy" ) ]
7060 [ HttpPost ( "refresh" ) ]
7161 public async Task < ActionResult < LoginUserOut > > Refresh ( [ FromBody ] LoginTokenIn model )
7262 {
73- try
63+ if ( string . IsNullOrWhiteSpace ( model . RefreshToken ) )
7464 {
75- if ( string . IsNullOrEmpty ( model . RefreshToken ) ) return BadRequest ( ) ;
65+ return BadRequest ( ) ;
66+ }
7667
77- string hashedInput = _jwtService . HashToken ( model . RefreshToken ) ;
68+ var hashedInput = _jwtService . HashToken ( model . RefreshToken ) ;
69+ var userId = await _userDAL . GetUserIdByRefreshToken ( hashedInput ) ;
70+ if ( userId == null )
71+ {
72+ return Unauthorized ( "Session expirée" ) ;
73+ }
7874
79- var userId = await _userDAL . GetUserIdByRefreshToken ( hashedInput ) ;
80- if ( userId == null ) return Unauthorized ( "Session expirée" ) ;
75+ var user = await _userDAL . GetUserById ( userId . Value ) ;
76+ if ( user == null )
77+ {
78+ return Unauthorized ( "Session expirée" ) ;
79+ }
8180
82- var user = await _userDAL . GetUserById ( userId . Value ) ;
83-
84- string newRefreshToken = _jwtService . GenerateRefreshToken ( ) ;
85- string newHashed = _jwtService . HashToken ( newRefreshToken ) ;
81+ var newRefreshToken = _jwtService . GenerateRefreshToken ( ) ;
82+ var newHashed = _jwtService . HashToken ( newRefreshToken ) ;
8683
87- await _userDAL . DeleteRefreshToken ( hashedInput ) ;
88- await _userDAL . SaveRefreshToken ( user . Id , newHashed , DateTime . UtcNow . AddDays ( 30 ) ) ;
84+ await _userDAL . DeleteRefreshToken ( hashedInput ) ;
85+ await _userDAL . SaveRefreshToken ( user . Id , newHashed , DateTime . UtcNow . AddDays ( 30 ) ) ;
8986
90- return Ok ( new LoginUserOut {
91- User = user ,
92- AccessToken = _jwtService . GenerateAccessToken ( user . Id ) ,
93- RefreshToken = newRefreshToken
94- } ) ;
95- }
96- catch ( Exception e ) { return StatusCode ( 500 , e . Message ) ; }
87+ return Ok ( new LoginUserOut
88+ {
89+ User = user . ToPublicUser ( ) ,
90+ AccessToken = _jwtService . GenerateAccessToken ( user . Id ) ,
91+ RefreshToken = newRefreshToken
92+ } ) ;
9793 }
9894 }
9995}
0 commit comments