Done for Login and notification system
This commit is contained in:
@ -1,15 +1,11 @@
|
||||
|
||||
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.core.security import create_access_token
|
||||
from fuware.core.security.security import create_refresh_token
|
||||
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()
|
||||
@ -20,22 +16,24 @@ class UserService(BaseService):
|
||||
def get_by_username(self, username: str):
|
||||
return self.repos.get_by_username(username)
|
||||
|
||||
def get_by_id(self, user_id: str):
|
||||
return self.repos.get_by_id(user_id)
|
||||
|
||||
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 False
|
||||
if not get_hasher().verify(password=user.password, hashed=db_user.password):
|
||||
return False
|
||||
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 generate_token(self, user_id: str):
|
||||
access_token = create_access_token(data={"sub": str(user_id)})
|
||||
refresh_token = create_refresh_token(data={"sub": str(user_id)})
|
||||
return access_token, refresh_token
|
||||
|
||||
def delete_session(self, db: Session, user_ss: str):
|
||||
self.repos.logout(db=db, user_ss=user_ss)
|
||||
def get_access_token(self, user_id: str):
|
||||
return create_access_token(data={"sub": str(user_id)})
|
||||
|
Reference in New Issue
Block a user