Neda/Back/domains/auth/service.py
2026-03-06 15:16:41 +03:30

53 lines
886 B
Python

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"
}