66from fastapi .security import OAuth2PasswordBearer
77from jose import JWTError , jwt
88from sqlalchemy .ext .asyncio import AsyncSession
9+ from Pydantic import SecretStr
910
1011from ..crud .crud_users import crud_users
1112from .config import settings
1213from .db .crud_token_blacklist import crud_token_blacklist
1314from .schemas import TokenBlacklistCreate , TokenData
1415
1516
16- SECRET_KEY = settings .SECRET_KEY
17+ SECRET_KEY : SecretStr = settings .SECRET_KEY
1718ALGORITHM = settings .ALGORITHM
1819ACCESS_TOKEN_EXPIRE_MINUTES = settings .ACCESS_TOKEN_EXPIRE_MINUTES
1920REFRESH_TOKEN_EXPIRE_DAYS = settings .REFRESH_TOKEN_EXPIRE_DAYS
@@ -57,7 +58,7 @@ async def create_access_token(data: dict[str, Any], expires_delta: timedelta | N
5758 else :
5859 expire = datetime .now (UTC ).replace (tzinfo = None ) + timedelta (minutes = ACCESS_TOKEN_EXPIRE_MINUTES )
5960 to_encode .update ({"exp" : expire , "token_type" : TokenType .ACCESS })
60- encoded_jwt : str = jwt .encode (to_encode , SECRET_KEY , algorithm = ALGORITHM )
61+ encoded_jwt : str = jwt .encode (to_encode , SECRET_KEY . get_secret_value () , algorithm = ALGORITHM )
6162 return encoded_jwt
6263
6364
@@ -68,7 +69,7 @@ async def create_refresh_token(data: dict[str, Any], expires_delta: timedelta |
6869 else :
6970 expire = datetime .now (UTC ).replace (tzinfo = None ) + timedelta (days = REFRESH_TOKEN_EXPIRE_DAYS )
7071 to_encode .update ({"exp" : expire , "token_type" : TokenType .REFRESH })
71- encoded_jwt : str = jwt .encode (to_encode , SECRET_KEY , algorithm = ALGORITHM )
72+ encoded_jwt : str = jwt .encode (to_encode , SECRET_KEY . get_secret_value () , algorithm = ALGORITHM )
7273 return encoded_jwt
7374
7475
@@ -94,7 +95,7 @@ async def verify_token(token: str, expected_token_type: TokenType, db: AsyncSess
9495 return None
9596
9697 try :
97- payload = jwt .decode (token , SECRET_KEY , algorithms = [ALGORITHM ])
98+ payload = jwt .decode (token , SECRET_KEY . get_secret_value () , algorithms = [ALGORITHM ])
9899 username_or_email : str = payload .get ("sub" )
99100 token_type : str = payload .get ("token_type" )
100101
@@ -120,7 +121,7 @@ async def blacklist_tokens(access_token: str, refresh_token: str, db: AsyncSessi
120121 Database session for performing database operations.
121122 """
122123 for token in [access_token , refresh_token ]:
123- payload = jwt .decode (token , SECRET_KEY , algorithms = [ALGORITHM ])
124+ payload = jwt .decode (token , SECRET_KEY . get_secret_value () , algorithms = [ALGORITHM ])
124125 expires_at = datetime .fromtimestamp (payload .get ("exp" ))
125126 await crud_token_blacklist .create (
126127 db ,
@@ -131,7 +132,7 @@ async def blacklist_tokens(access_token: str, refresh_token: str, db: AsyncSessi
131132 )
132133
133134async def blacklist_token (token : str , db : AsyncSession ) -> None :
134- payload = jwt .decode (token , SECRET_KEY , algorithms = [ALGORITHM ])
135+ payload = jwt .decode (token , SECRET_KEY . get_secret_value () , algorithms = [ALGORITHM ])
135136 expires_at = datetime .fromtimestamp (payload .get ("exp" ))
136137 await crud_token_blacklist .create (
137138 db ,
0 commit comments