File tree Expand file tree Collapse file tree 3 files changed +22
-2
lines changed
EveryPinApi.Presentation/Controllers Expand file tree Collapse file tree 3 files changed +22
-2
lines changed Original file line number Diff line number Diff line change @@ -136,9 +136,14 @@ public async Task<IActionResult> Refresh([FromBody] TokenDto tokenDto)
136
136
}
137
137
138
138
[ HttpPost ( "logout" ) ]
139
- public async Task < IActionResult > Logout ( )
139
+ public async Task < IActionResult > Logout ( [ FromBody ] TokenDto tokenDto )
140
140
{
141
- return StatusCode ( 501 ) ;
141
+ var result = await _service . AuthenticationService . Logout ( tokenDto ) ;
142
+
143
+ if ( result . Succeeded )
144
+ return Ok ( ) ;
145
+ else
146
+ return result . Errors . Any ( e => e . Code == "InvalidToken" ) ? Unauthorized ( ) : BadRequest ( ) ;
142
147
}
143
148
144
149
[ HttpDelete ( "user" ) ]
Original file line number Diff line number Diff line change @@ -16,4 +16,5 @@ public interface IAuthenticationService
16
16
Task < TokenDto > CreateToken ( bool populateExp ) ;
17
17
Task < TokenDto > CreateTokenWithUpdateFcmToken ( string fcmToken , bool populateExp ) ;
18
18
Task < TokenDto > RefreshToken ( TokenDto tokenDto ) ;
19
+ Task < IdentityResult > Logout ( TokenDto tokenDto ) ;
19
20
}
Original file line number Diff line number Diff line change @@ -200,4 +200,18 @@ public async Task<TokenDto> RefreshToken(TokenDto tokenDto)
200
200
201
201
return await CreateToken ( populateExp : false ) ;
202
202
}
203
+
204
+ public async Task < IdentityResult > Logout ( TokenDto tokenDto )
205
+ {
206
+ var principal = GetPrincipalFromExpiredToken ( tokenDto . AccessToken ) ;
207
+ var userEmail = principal . FindFirst ( ClaimTypes . Email ) ;
208
+ var user = await _userManager . FindByEmailAsync ( userEmail ? . Value ) ;
209
+
210
+ user . RefreshToken = null ;
211
+ user . FcmToken = null ;
212
+
213
+ var result = await _userManager . UpdateAsync ( _user ) ;
214
+
215
+ return result ;
216
+ }
203
217
}
You can’t perform that action at this time.
0 commit comments