Done for Login and notification system
This commit is contained in:
@ -1,16 +1,17 @@
|
||||
from fuware.core.config import get_app_settings
|
||||
from fuware.core.security.hasher import get_hasher
|
||||
from fuware.db.models import SessionLogin, User
|
||||
from fuware.core.security.security import hash_password
|
||||
from fuware.db.models import User
|
||||
from fuware.schemas import UserCreate
|
||||
from sqlalchemy.orm import Session
|
||||
from uuid import uuid4
|
||||
from uuid import UUID
|
||||
|
||||
from fuware.schemas.user.user import UserSeeds
|
||||
|
||||
settings = get_app_settings()
|
||||
|
||||
class RepositoryUsers:
|
||||
def __init__(self):
|
||||
self.user = User()
|
||||
self.sessionLogin = SessionLogin()
|
||||
|
||||
def get_all(self, skip: int = 0, limit: int = 100):
|
||||
return self.user.query.offset(skip).limit(limit).all()
|
||||
@ -18,10 +19,13 @@ class RepositoryUsers:
|
||||
def get_by_username(self, username: str):
|
||||
return self.user.query.filter_by(username=username).first()
|
||||
|
||||
def create(self, db: Session, user: UserCreate):
|
||||
def get_by_id(self, user_id: str):
|
||||
return self.user.query.filter_by(id=UUID(user_id)).first()
|
||||
|
||||
def create(self, db: Session, user: UserCreate | UserSeeds):
|
||||
try:
|
||||
hasher = get_hasher()
|
||||
db_user = User(username=user.username, password=hasher.hash(user.password), name=user.name)
|
||||
password = getattr(user, "password")
|
||||
db_user = User(**user.dict(exclude={"password"}), password=hash_password(password))
|
||||
db.add(db_user)
|
||||
db.commit()
|
||||
except Exception:
|
||||
@ -30,36 +34,3 @@ class RepositoryUsers:
|
||||
|
||||
db.refresh(db_user)
|
||||
return db_user
|
||||
|
||||
def get_session_by_user_id(self, user_id: str):
|
||||
return self.sessionLogin.query.filter_by(user_id=user_id).first()
|
||||
|
||||
def create_session(self, db: Session, user_id: str):
|
||||
try:
|
||||
bhash = uuid4().hex[:10]
|
||||
db_ss = SessionLogin(session=bhash,user_id=user_id)
|
||||
db.add(db_ss)
|
||||
db.commit()
|
||||
except Exception:
|
||||
db.rollback()
|
||||
raise
|
||||
|
||||
db.refresh(db_ss)
|
||||
return db_ss
|
||||
|
||||
def login(self, db: Session, user_id: str):
|
||||
db_ss = self.get_session_by_user_id(user_id)
|
||||
if not db_ss:
|
||||
db_ss = self.create_session(db=db, user_id=user_id)
|
||||
return db_ss
|
||||
|
||||
def logout(self, db: Session, user_ss: str):
|
||||
print(f"Logout: {user_ss}")
|
||||
db_ss = self.sessionLogin.query.filter_by(session=user_ss).first()
|
||||
print(f"db_ss: {db_ss}")
|
||||
try:
|
||||
db.delete(db_ss)
|
||||
db.commit()
|
||||
except Exception as e:
|
||||
db.rollback()
|
||||
raise e
|
||||
|
@ -3,7 +3,7 @@ from fuware.core.root_logger import get_logger
|
||||
from fuware.repos.repository_users import RepositoryUsers
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from fuware.schemas.user.user import UserCreate
|
||||
from fuware.schemas.user import UserSeeds
|
||||
|
||||
|
||||
logger = get_logger("init_users")
|
||||
@ -15,19 +15,19 @@ def dev_users() -> list[dict]:
|
||||
"username": "sam",
|
||||
"password": "admin",
|
||||
"name": "Sam",
|
||||
"is_admin": 1,
|
||||
"is_lock": 0,
|
||||
"is_admin": True,
|
||||
"is_lock": False,
|
||||
},
|
||||
{
|
||||
"username": "sam1",
|
||||
"password": "admin",
|
||||
"name": "Sam1",
|
||||
"is_admin": 0,
|
||||
"is_lock": 1
|
||||
"is_admin": False,
|
||||
"is_lock": False,
|
||||
},
|
||||
]
|
||||
|
||||
def default_users_init(session: Session):
|
||||
users = RepositoryUsers()
|
||||
for user in dev_users():
|
||||
users.create(session, UserCreate(**user))
|
||||
users.create(session, UserSeeds(**user))
|
||||
|
Reference in New Issue
Block a user