Skip to content

Commit

Permalink
update(auth): fix jwt tokens generate
Browse files Browse the repository at this point in the history
  • Loading branch information
danila committed Feb 3, 2024
1 parent 8396ab6 commit 9d5ab68
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 4 deletions.
5 changes: 4 additions & 1 deletion src/core/auth/common/jwt.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import datetime
from abc import (
ABC,
abstractmethod,
Expand All @@ -22,7 +23,9 @@ def refresh_tokens(self, token: str) -> TokensData:
"""Refresh tokens using refresh token."""

@abstractmethod
def _generate_token(self, payload: dict, type_: str) -> str:
def _generate_token(
self, payload: dict, type_: str, iat: datetime.datetime, exp: datetime.datetime
) -> str:
"""Generate a JWT token."""

@abstractmethod
Expand Down
18 changes: 15 additions & 3 deletions src/core/auth/jwt.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,23 @@ def __init__(self, jwt_config: JWTConfig) -> None:

def encode_token(self, payload: UserPayload) -> TokensData:
copy_payload: dict = payload.model_dump()

iat = datetime.datetime.now(datetime.UTC)
access_exp = iat + datetime.timedelta(
minutes=self._jwt_config.access_token_expire_minutes
)
refresh_exp = iat + datetime.timedelta(
minutes=self._jwt_config.refresh_token_expire_minutes
)

access_jwt = self._generate_token(
payload=copy_payload,
type_=TokenTypes.ACCESS.value,
payload=copy_payload, type_=TokenTypes.ACCESS.value, iat=iat, exp=access_exp
)
refresh_jwt = self._generate_token(
payload=copy_payload,
type_=TokenTypes.REFRESH.value,
iat=iat,
exp=refresh_exp,
)

return TokensData(
Expand All @@ -44,7 +54,9 @@ def refresh_tokens(self, token: str) -> TokensData:
refreshed_tokens = self.encode_token(UserPayload(**payload.model_dump()))
return refreshed_tokens

def _generate_token(self, payload: dict, type_: str) -> str:
def _generate_token(
self, payload: dict, type_: str, iat: datetime.datetime, exp: datetime.datetime
) -> str:
iat = datetime.datetime.now(datetime.UTC)
exp = iat + datetime.timedelta(
minutes=self._jwt_config.access_token_expire_minutes
Expand Down

0 comments on commit 9d5ab68

Please sign in to comment.