1- from datetime import datetime , timedelta
1+ from datetime import datetime , timedelta , timezone
22
33import jwt
44from structlog import get_logger
@@ -22,15 +22,21 @@ def __init__(
2222 self ._token_expiration_minutes = token_expiration_minutes
2323
2424 def generate_jwt_token (self , user : UserDTO ) -> str :
25- expire = datetime .now () + timedelta (minutes = self ._token_expiration_minutes )
26- payload = {"user_id" : user .id , "username" : user .username , "exp" : expire }
25+ now = datetime .now (timezone .utc )
26+ expire = now + timedelta (minutes = self ._token_expiration_minutes )
27+ payload = {
28+ "user_id" : user .id ,
29+ "username" : user .username ,
30+ "iat" : now ,
31+ "exp" : expire ,
32+ }
2733 return jwt .encode (payload , self ._secret_key , algorithm = self ._algorithm )
2834
2935 def parse_jwt_token (self , token : str ) -> TokenPayloadDTO :
3036 try :
3137 payload = jwt .decode (token , self ._secret_key , algorithms = [self ._algorithm ])
3238 except jwt .InvalidTokenError as err :
33- logger .error ("Invalid JWT token" , token = token , error = err )
39+ logger .error ("Invalid JWT token" , error = err )
3440 raise IncorrectJWTTokenException ()
3541
3642 return TokenPayloadDTO (user_id = payload ["user_id" ], username = payload ["username" ])
0 commit comments