Skip to content

Commit 6f9609e

Browse files
committed
Use timezone-aware datetime in JWT token generation
1 parent 702ab74 commit 6f9609e

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

conduit/services/auth_token.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from datetime import datetime, timedelta
1+
from datetime import datetime, timedelta, timezone
22

33
import jwt
44
from 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

Comments
 (0)