From 8620e9b5a1397b6e8174859a06519e681199e09b Mon Sep 17 00:00:00 2001 From: IluaAir Date: Sat, 20 Sep 2025 21:54:28 +0300 Subject: [PATCH] add creation refresh token --- src/core/auth_manager.py | 9 +++++++++ src/core/settings.py | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/src/core/auth_manager.py b/src/core/auth_manager.py index ef448f6..4c5d523 100644 --- a/src/core/auth_manager.py +++ b/src/core/auth_manager.py @@ -1,5 +1,7 @@ +import os from datetime import datetime, timedelta, timezone +import bcrypt import jwt from passlib.context import CryptContext @@ -33,6 +35,13 @@ class AuthManager: algorithm=settings.access_token.algorithm, ) return encoded_jwt + + @classmethod + def create_refresh_token(cls) -> str: + random_bytes = os.urandom(32) + data = b'settings.refresh_token.secret_key' + random_bytes + token_hash = bcrypt.hashpw(data, bcrypt.gensalt(rounds=12)).decode() + return token_hash @classmethod def decode_access_token(cls, token: str) -> dict: diff --git a/src/core/settings.py b/src/core/settings.py index cd41b11..6ae3347 100644 --- a/src/core/settings.py +++ b/src/core/settings.py @@ -40,10 +40,18 @@ class AccessToken(BaseSettings): token_type: str = "bearer" # noqa: S105 +class RefreshToken(BaseSettings): + model_config = SettingsConfigDict( + env_file=".env", env_file_encoding="utf-8", env_prefix="REFRESH_TOKEN_" + ) + secret_key: str + + class Settings(BaseSettings): api: ApiPrefix = ApiPrefix() db: DbSettings = DbSettings() access_token: AccessToken = AccessToken() # type: ignore + refresh_token: RefreshToken = RefreshToken() # type: ignore settings = Settings()