@@ -25,39 +25,46 @@ public LoginController(IConfiguration config,
2525 }
2626
2727 [ HttpGet ( Name = "Login" ) ]
28- public async Task < IActionResult > Get ( ) {
28+ public async Task < IActionResult > Get ( bool force ) {
2929 JwtSecurityToken jwtToken ;
3030 string token ;
31- AuthResult authResult ;
31+ AuthResult authResult = new AuthResult ( ) ;
32+ RefreshTokenResponse refreshTokenDTO = new RefreshTokenResponse ( ) {
33+ sRefreshToken = "" ,
34+ TokenExpiry = null ,
35+ Success = true ,
36+ Message = ""
37+ } ;
3238
3339 if ( HttpContext . User . Identity ! . Name == "" || HttpContext . User . Identity . Name == null ) {
3440 throw new InvalidUserException ( ) ;
3541 }
3642
37- if ( jwtUtil . ValidateToken ( HttpContext . Request , out jwtToken , out token ) ) {
43+ if ( ! force && jwtUtil . ValidateToken ( HttpContext . Request , out jwtToken , out token ) ) {
44+ refreshTokenDTO . TokenExpiry = jwtToken . ValidTo ;
45+ refreshTokenDTO . Message = "Not Yet Expired" ;
3846 if ( HttpContext . User . Identity . Name == jwtToken . Claims
3947 . Where ( c => c . Type == ClaimTypes . Name )
4048 . Select ( c => c . Value ) . SingleOrDefault ( ) ) {
4149 Array . ForEach ( jwtToken . Claims . Where ( c => c . Type == ClaimTypes . Role )
4250 . ToArray ( ) , c => ( ( ClaimsIdentity ) HttpContext . User . Identity ) . AddClaim ( c ) ) ;
4351 }
44- authResult = new AuthResult ( ) {
45- Token = token ,
46- Success = true ,
47- RefreshToken = ""
48- } ;
4952 } else {
5053 List < Claim > ? claims = _service . GetUserClaims ( HttpContext . User . Identity . Name ) ;
5154
5255 ClaimsIdentity claimsIdentity = ( ClaimsIdentity ) HttpContext . User . Identity ;
5356 Array . ForEach ( claims . Where ( c => c . Type == ClaimTypes . Role ) . ToArray ( ) ,
5457 c => claimsIdentity . AddClaim ( c ) ) ;
5558 authResult = jwtUtil . GenerateJwtToken ( HttpContext . User . Identity . Name , claims ) ;
59+ HttpContext . Response . Cookies . Append ( "X-UserRoles" , authResult . Token ! ,
60+ new CookieOptions ( ) { HttpOnly = true } ) ;
61+ refreshTokenDTO . sRefreshToken = authResult . RefreshToken ;
62+ refreshTokenDTO . Message = "New Token generated" ;
5663 }
5764
5865 AntiforgeryTokenSet ? tokens = antiforgery . GetAndStoreTokens ( HttpContext ) ;
5966 HttpContext . Response . Cookies . Append ( "XSRF-TOKEN" , tokens . RequestToken ! , new CookieOptions ( ) { HttpOnly = false } ) ;
6067
61- return Ok ( authResult ) ;
68+ return Ok ( refreshTokenDTO ) ;
6269 }
6370}
0 commit comments