2023-03-14 14:48:54 +08:00
|
|
|
from fastapi import HTTPException
|
|
|
|
from sqlalchemy.orm import Session
|
|
|
|
from .Models import User, Post, Department, AuthRule
|
|
|
|
from . import Schemas
|
|
|
|
|
|
|
|
|
|
|
|
def get_user_info(db: Session, email: str):
|
|
|
|
user = db.query(User).filter_by(email=email).first()
|
|
|
|
return user
|
|
|
|
|
|
|
|
|
|
|
|
def get_full_user_info(db: Session, email: str):
|
|
|
|
user = db.query(User).filter_by(email=email).first()
|
|
|
|
if not user:
|
|
|
|
return None
|
|
|
|
departments = []
|
|
|
|
posts = []
|
|
|
|
if user.department:
|
|
|
|
department_id_list = [int(department) for department in user.department.split(",")]
|
|
|
|
departments = [item.to_dict() for item in
|
|
|
|
db.query(Department).filter(Department.id.in_(department_id_list))]
|
|
|
|
if user.post:
|
|
|
|
post_id_list = [int(post) for post in user.post.split(",")]
|
|
|
|
posts = [item.to_dict() for item in db.query(Post).filter(Post.id.in_(post_id_list))]
|
|
|
|
user_data = user.to_dict()
|
|
|
|
user_data['department_list'] = departments
|
|
|
|
user_data['post_list'] = posts
|
|
|
|
|
|
|
|
return user_data
|
|
|
|
|
|
|
|
|
|
|
|
def create_user(db: Session, email: str):
|
|
|
|
user = User(email=email)
|
|
|
|
db.add(user)
|
|
|
|
db.commit()
|
|
|
|
db.refresh(user)
|
|
|
|
return user
|
|
|
|
|
|
|
|
|
|
|
|
def marge_auth_data(auth_data_list):
|
|
|
|
auth_data = []
|
|
|
|
for item in auth_data_list:
|
|
|
|
if item:
|
|
|
|
auth_data.extend(item.split(','))
|
|
|
|
auth_data = list(set(auth_data))
|
|
|
|
auth_data.sort()
|
|
|
|
auth_data_str = ",".join(auth_data)
|
|
|
|
return auth_data_str
|
|
|
|
|
|
|
|
|
|
|
|
def get_user_auth(db: Session, email):
|
|
|
|
"""
|
|
|
|
获取用户权限信息
|
|
|
|
"""
|
|
|
|
user = db.query(User).filter_by(email=email).first()
|
|
|
|
user_auth_data_str = user.auth_data
|
|
|
|
if not user.auth_data:
|
|
|
|
if user.department:
|
|
|
|
department_id_list = [int(d_id) for d_id in user.department.split(',')]
|
|
|
|
department_auth_data_list = [
|
|
|
|
item.auth_data
|
|
|
|
for item in db.query(Department).filter(Department.id.in_(department_id_list))]
|
|
|
|
user_auth_data_str = marge_auth_data(department_auth_data_list)
|
|
|
|
return user_auth_data_str
|