24 lines
896 B
Python
24 lines
896 B
Python
from typing import Optional
|
|
from sqlmodel import Session, select
|
|
|
|
from app.database.models.user_model import User
|
|
from app.core.security import verify_password
|
|
from app.utils.models import generate_user_uuid5
|
|
|
|
def get_user_by_generated_uuid(session: Session, email: str, shop_id: Optional[int]) -> Optional[User]:
|
|
user_uuid = generate_user_uuid5(email, shop_id)
|
|
stmt = select(User).where(User.uuid == user_uuid)
|
|
db_user = session.exec(stmt).one_or_none()
|
|
return db_user
|
|
|
|
def create_user(session: Session):
|
|
raise NotImplementedError()
|
|
|
|
def authenticate(session: Session, email: str, password: str, shop_id: Optional[int]) -> Optional[User]:
|
|
db_user = get_user_by_generated_uuid(session, email, shop_id)
|
|
if db_user is None:
|
|
return None
|
|
if not verify_password(plain_password=password, hashed_password=db_user.password):
|
|
return None
|
|
return db_user
|