11import logging
2- import os
32import secrets
43from datetime import datetime , timedelta , timezone
54from typing import Any , Dict , Optional
87from fastapi import Depends , HTTPException , status
98from fastapi .security import APIKeyHeader
109from passlib .context import CryptContext
10+ from attackmate_api_server .config import settings
1111
1212load_dotenv ()
1313
1414
15- TOKEN_EXPIRE_MINUTES = int (os .getenv ('TOKEN_EXPIRE_MINUTES' , 30 ))
1615API_KEY_HEADER_NAME = 'X-Auth-Token'
1716api_key_header_scheme = APIKeyHeader (name = API_KEY_HEADER_NAME , auto_error = True )
1817pwd_context = CryptContext (schemes = ['argon2' ], deprecated = 'auto' )
@@ -31,15 +30,15 @@ def verify_password(plain_password: str, hashed_password: str) -> bool:
3130
3231
3332def get_user_hash (username : str ) -> Optional [str ]:
34- """Fetches the hashed password from environment variables ."""
35- env_var_name = f'USER_ { username . upper () } _HASH'
36- return os . getenv ( env_var_name )
33+ """Fetches the hashed password from the centralized settings ."""
34+ logger . info ( f"user hashses from settings: { settings } " )
35+ return settings . users . get ( username . lower () )
3736
3837
3938def create_access_token (username : str ) -> str :
4039 """Creates a new token, stores it, and returns the token string."""
4140 token = secrets .token_urlsafe (32 )
42- expires = datetime .now (timezone .utc ) + timedelta (minutes = TOKEN_EXPIRE_MINUTES )
41+ expires = datetime .now (timezone .utc ) + timedelta (minutes = settings . token_expire_minutes )
4342 # TODO locking needed for multi-threaded access, smth like with token_lock ?
4443 ACTIVE_TOKENS [token ] = {'username' : username , 'expires' : expires }
4544 logger .info (f"Created new token for user '{ username } ' expiring at { expires } " )
@@ -53,7 +52,7 @@ def renew_token_expiry(token: str) -> bool:
5352 """
5453 token_data = ACTIVE_TOKENS .get (token )
5554 if token_data :
56- token_data ['expires' ] = datetime .now (timezone .utc ) + timedelta (minutes = TOKEN_EXPIRE_MINUTES )
55+ token_data ['expires' ] = datetime .now (timezone .utc ) + timedelta (minutes = settings . token_expire_minutes )
5756 logger .debug (f"Renewed token expiry for user '{ token_data ['username' ]} '" )
5857 return True
5958 return False
0 commit comments