from sqlalchemy.ext.asyncio import AsyncSession from core.security import verify_password from core.jwt import create_access_token from domains.users.repo import get_user_by_username async def authenticate_user( db: AsyncSession, username: str, secret: str ): user = await get_user_by_username(db, username) if not user: return None if not user.is_active: return None valid = verify_password(secret, user.secret_hash) if not valid: return None return user async def login_user( db: AsyncSession, username: str, secret: str ): user = await authenticate_user( db, username, secret ) if not user: return None token = create_access_token( subject=str(user.id) ) return { "access_token": token, "token_type": "bearer" }