from fastapi import HTTPException from sqlalchemy.orm import Session from fuware.core.message_code import message_code from fuware.core.security.hasher import get_hasher from fuware.repos import RepositoryUsers from fuware.schemas import UserRequest, UserCreate from fuware.services._base_service import BaseService hasher = get_hasher() message = message_code() class UserService(BaseService): def __init__(self): self.repos = RepositoryUsers() def get_all(self, skip: int = 0, limit: int = 100): return self.repos.get_all(skip=skip, limit=limit) def get_by_username(self, username: str): return self.repos.get_by_username(username) def create(self, db: Session, user: UserCreate): return self.repos.create(db=db, user=user) def check_exist(self, user: UserRequest): db_user = self.get_by_username(username=user.username) if not db_user: raise HTTPException(status_code=401, detail=message.WRONG_INPUT) if not hasher.verify(password=user.password, hashed=db_user.password): raise HTTPException(status_code=401, detail=message.WRONG_INPUT) if db_user.is_lock is True: raise HTTPException(status_code=401, detail=message.ACCOUNT_LOCK) return db_user def check_login(self, db: Session, user_id: str): db_session = self.repos.login(db=db, user_id=user_id) return db_session.session def delete_session(self, db: Session, user_ss: str): self.repos.logout(db=db, user_ss=user_ss)