| | |
| | | return Response(code=400, msg="token not found") |
| | | return Response(code=200, msg="success", data={ |
| | | "ragflow_token": token.ragflow_token, |
| | | "bisheng_token": token.bisheng_token, |
| | | }) |
| | | |
| | | |
| | |
| | | from app.models.user import PageParameter, UserStatus, UserInfo, LoginData |
| | | from app.models.user_model import UserModel |
| | | from app.service.user import get_user_list, edit_user_status, delete_user_data, create_user, edit_user_data, \ |
| | | edit_user_pwd |
| | | edit_user_pwd, get_user_info, get_user_routers |
| | | |
| | | user_router = APIRouter() |
| | | |
| | |
| | | if not is_edit: |
| | | return Response(code=500, msg="user pwd reset failure", data={}) |
| | | return Response(code=200, msg="user pwd reset successfully", data={}) |
| | | |
| | | |
| | | @user_router.get("/user_info", response_model=Response) |
| | | async def user_info(current_user: UserModel = Depends(get_current_user),db=Depends(get_db)): |
| | | user_info = await get_user_info(db, current_user.id) |
| | | if not user_info: |
| | | return Response(code=500, msg="user get failure", data={}) |
| | | return Response(code=200, msg="successfully", data=user_info) |
| | | |
| | | |
| | | @user_router.get("/user_routers", response_model=Response) |
| | | async def user_routers(current_user: UserModel = Depends(get_current_user),db=Depends(get_db)): |
| | | routers = await get_user_routers(db, current_user.id) |
| | | if not routers: |
| | | return Response(code=500, msg="user get failure", data={}) |
| | | return Response(code=200, msg="successfully", data=routers) |
| | |
| | | 'children': [org.to_tree_select_json() for org in self.children] |
| | | } |
| | | |
| | | def to_parent_select_json(self): |
| | | return { |
| | | 'id': self.id, |
| | | 'label': self.name, |
| | | 'parent': [org.to_parent_select_json() for org in self.parent] |
| | | } |
| | | |
| | | def get_pid(self): |
| | | if self.parent: |
| | | return self.parent.id |
| | |
| | | |
| | | return router |
| | | |
| | | |
| | | def to_router_dict(self): |
| | | router = { |
| | | 'id': self.id, |
| | | 'name': self.path.capitalize() if self.path else '', |
| | | 'path': self.path, |
| | | 'hidden': bool(self.hidden), |
| | | 'redirect': 'noRedirect', |
| | | 'component': self.url, |
| | | 'alwaysShow': True, |
| | | 'resourceType': self.get_type_json(), |
| | | 'meta': { |
| | | 'title': self.name, |
| | | 'icon': self.icon, |
| | | 'noCache': False, |
| | | 'link': '' |
| | | }, |
| | | 'parentId': self.get_pid(), |
| | | } |
| | | |
| | | if not router['component']: |
| | | router['component'] = 'Layout' |
| | | return router |
| | | |
| | | |
| | | def to_menu_json(self): |
| | | return { |
| | | 'id': self.id, |
| | |
| | | def to_json(self): |
| | | return { |
| | | 'id': self.id, |
| | | 'createdatetime': self.created_at, |
| | | 'updatedatetime': self.updated_at, |
| | | # 'createdatetime': self.created_at, |
| | | # 'updatedatetime': self.updated_at, |
| | | 'name': self.name, |
| | | 'description': self.description |
| | | } |
| | |
| | | return json |
| | | |
| | | |
| | | def to_dict(self): |
| | | json = { |
| | | 'roleId': self.id, |
| | | 'createTime': self.created_at.strftime('%Y-%m-%d %H:%M:%S'), |
| | | 'updateTime': self.updated_at.strftime('%Y-%m-%d %H:%M:%S'), |
| | | 'roleName': self.name, |
| | | 'remark': self.description, |
| | | 'iconCls': self.iconCls, |
| | | 'roleSort': self.seq, |
| | | 'status': self.status, |
| | | 'roleKey': self.roleKey, |
| | | 'dataScope': self.dataScope |
| | | } |
| | | return json |
| | | |
| | | class RoleData(BaseModel): |
| | | remark: Optional[str] = "" |
| | | roleName: str |
| | |
| | | 'userName': self.username, |
| | | 'loginName': self.login_name if self.login_name else "", |
| | | 'status': self.status, |
| | | 'email': self.email, |
| | | 'phone': self.phone, |
| | | 'permission':self.permission |
| | | } |
| | | |
| | | def to_json(self): |
| | |
| | | user = db.query(UserModel).filter(UserModel.username == username).first() |
| | | if not user: |
| | | return False |
| | | # if not verify_password(password, user.hashed_password): |
| | | # return False |
| | | if not verify_password(password, user.hashed_password): |
| | | return False |
| | | return user |
| | | |
| | | |
| | |
| | | |
| | | from app.api import pwd_context |
| | | from app.config.config import settings |
| | | from app.models import RoleModel, GroupModel, AgentType |
| | | from app.models import RoleModel, GroupModel, AgentType, role_resource_table |
| | | from app.models.user_model import UserModel |
| | | from Log import logger |
| | | from app.service.bisheng import BishengService |
| | |
| | | return True |
| | | |
| | | |
| | | async def get_user_info(db, page_size: int, page_index: int, keyword: str): |
| | | query = db.query(UserModel) |
| | | if keyword: |
| | | query = query.filter(UserModel.group_name.like('%{}%'.format(keyword))) |
| | | users = query.order_by(UserModel.id.desc()).limit(page_size).offset( |
| | | (page_index - 1) * page_size).all() |
| | | return {"total": query.count(), "rows": [user.to_json() for user in users]} |
| | | async def get_user_info(db, user_id): |
| | | permissions = set() |
| | | roles = [] |
| | | dept = [] |
| | | role_set = set() |
| | | dept_set = set() |
| | | user = db.query(UserModel).filter_by(id=user_id).first() |
| | | await role_resource(role_set, roles, permissions, user.roles) |
| | | for ogt in user.organizations: |
| | | dept.append(ogt.to_json()) |
| | | if ogt.roles: |
| | | await role_resource(role_set, roles, permissions, user.roles) |
| | | parent_ogt = ogt.parent |
| | | while parent_ogt: |
| | | if parent_ogt.id not in dept_set: |
| | | await role_resource(role_set, roles, permissions, parent_ogt.roles) |
| | | dept_set.add(parent_ogt.id) |
| | | parent_ogt = parent_ogt.parent |
| | | if user.permission == "admin": |
| | | permissions = ["*:*:*"] |
| | | |
| | | return {"permissions": list(permissions), "dept": dept , "roles": roles, "user": user.to_dict()} |
| | | |
| | | |
| | | async def role_resource(role_set, role_list, permissions, roles): |
| | | for role in roles: |
| | | if role.id not in role_set: |
| | | role_set.add(role.id) |
| | | role_list.append(role.to_dict()) |
| | | for r in role.resources: |
| | | if r.resource_type_id == "1": |
| | | permissions.add(r.perms) |
| | | |
| | | |
| | | async def get_user_routers(db, user_id): |
| | | permissions = {} |
| | | role_set = set() |
| | | dept_set = set() |
| | | user = db.query(UserModel).filter_by(id=user_id).first() |
| | | parent_id = "" |
| | | async def role_resource(role_set, permissions, roles): |
| | | nonlocal parent_id |
| | | for role in roles: |
| | | if role.id not in role_set: |
| | | role_set.add(role.id) |
| | | |
| | | for r in role.resources: |
| | | if r.resource_type_id != "1": |
| | | if not r.resource_id: |
| | | parent_id = r.id |
| | | continue |
| | | permissions[r.id] = r.to_router_dict() |
| | | |
| | | await role_resource(role_set, permissions, user.roles) |
| | | for ogt in user.organizations: |
| | | if ogt.roles: |
| | | await role_resource(role_set, permissions, user.roles) |
| | | parent_ogt = ogt.parent |
| | | while parent_ogt: |
| | | if parent_ogt.id not in dept_set: |
| | | await role_resource(role_set, permissions, parent_ogt.roles) |
| | | dept_set.add(parent_ogt.id) |
| | | parent_ogt = parent_ogt.parent |
| | | tmp_dit = {} |
| | | for permission in permissions.values(): |
| | | tmp_dit[permission["parentId"]] = tmp_dit.get(permission["parentId"], []) +[permission] |
| | | def get_child(parent_id): |
| | | res = permissions[parent_id] |
| | | res["children"] = [get_child(i["id"]) for i in tmp_dit.get(parent_id, [])] |
| | | return res |
| | | |
| | | print(parent_id) |
| | | print(tmp_dit) |
| | | return {"routers": [get_child(i["id"]) for i in tmp_dit.get(parent_id, [])]} |
| | | |
| | | |