37 lines
1.3 KiB
Python
37 lines
1.3 KiB
Python
|
|
from fastapi import HTTPException
|
|
from sqlalchemy.orm import Session
|
|
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()
|
|
|
|
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, db: Session, user: UserRequest):
|
|
db_user = self.get_by_username(username=user.username)
|
|
if not db_user:
|
|
raise HTTPException(status_code=401, detail="Your username or password input is wrong!")
|
|
if not hasher.verify(password=user.password, hashed=db_user.password):
|
|
raise HTTPException(status_code=401, detail="Your username or password input is wrong!")
|
|
if db_user.is_lock is True:
|
|
raise HTTPException(status_code=401, detail="Your Account is banned")
|
|
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
|