swag-shop/backend/app/crud/user_crud.py

37 lines
1.4 KiB
Python

import uuid
from typing import Optional
from sqlmodel import Session, select
from app.database.models.user_model import User
from app.schemas.user_schemas import UserRegister
from app.core.security import verify_password, get_password_hash
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, user_register: UserRegister, shop_id: Optional[int], user_role: str):
user_uuid = generate_user_uuid5(user_register.email, shop_id)
password = get_password_hash(user_register.password)
new_user = User(
uuid=user_uuid,
shop_id=shop_id,
email=user_register.email,
username=user_register.username,
phone_number=user_register.phone_number
)
session.add(new_user)
session.commit()
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