コード例 #1
0
 def post(self):
     from models.user import UserHasRole, User
     from models.role import Role
     from app import db
     try:
         user_id = request.json.get('id')
         if not User.check_user(self.app_id, user_id):
             return '权限错误', 400
         now_roles = request.json.get('role_ids')
         old_roles = UserHasRole.get_role(user_id)
         need_delete = list(set(old_roles) - set(now_roles))
         need_add = list(set(now_roles) - set(old_roles))
         for n in need_add:
             if Role.check_role(self.app_id, n):
                 m = UserHasRole()
                 m.user_id = user_id
                 m.role_id = n
                 db.session.add(m)
         for d in need_delete:
             if Role.check_role(self.app_id, d):
                 m = UserHasRole.query.filter_by(user_id=user_id, role_id=d).first()
                 db.session.delete(m)
         db.session.commit()
     except Exception as e:
         db.session.rollback()
コード例 #2
0
ファイル: role_manage.py プロジェクト: Orientsoft/user-server
    def post(self):
        from models.role import Role, RoleHasApi
        from models.api import Api

        from app import db
        try:
            role_id = request.json.get('id')
            if not Role.check_role(self.app_id, role_id):
                return '权限错误', 400
            now_apis = request.json.get('api_ids')
            old_apis = RoleHasApi.get_api(role_id)
            need_delete = list(set(old_apis) - set(now_apis))
            need_add = list(set(now_apis) - set(old_apis))
            for n in need_add:
                if Api.check_api(self.app_id, n):
                    m = RoleHasApi()
                    m.role_id = role_id
                    m.api_id = n
                    db.session.add(m)
            for d in need_delete:
                if Api.check_api(self.app_id, d):
                    m = RoleHasApi.query.filter_by(role_id=role_id,
                                                   api_id=d).first()
                    db.session.delete(m)
            db.session.commit()
        except Exception as e:
            db.session.rollback()
コード例 #3
0
ファイル: role_manage.py プロジェクト: Orientsoft/user-server
    def get(self):
        # 根据role_id查询对应的menu_id。
        # 需返回已分配的,和未分配的菜单
        from models.role import Role, RoleHasApi, RoleHasMenu
        from models.menu import Menu
        returnObj = {}
        assigned_menus = []
        not_assigned_menus = []
        role_id = request.args.get('id')
        if not Role.check_role(self.app_id, role_id):
            return '权限错误', 400

        assigned_menus_in_db = RoleHasMenu.query.filter_by(
            role_id=role_id).all()
        all_menus_in_db = Menu.query.filter_by(app_id=self.app_id).all()

        assigned_menu_ids = []
        for a in assigned_menus_in_db:
            assigned_menu_ids.append(a.menu_id)
            assigned_menus.append({
                'id':
                a.menu_id,
                'name':
                a.menu.name,
                'refer_path':
                a.menu.refer_path,
                'parent_id':
                a.menu.parent_id,
                'parent_name':
                a.menu.parent.name if a.menu.parent else ''
            })
        assigned_menu_ids = set(assigned_menu_ids)

        for a in all_menus_in_db:
            if a.id not in assigned_menu_ids:
                not_assigned_menus.append({
                    'id':
                    a.id,
                    'name':
                    a.name,
                    'refer_path':
                    a.refer_path,
                    'parent_id':
                    a.parent_id,
                    'parent_name':
                    a.parent.name if a.parent else ''
                })

        returnObj['not_assigned_menus'] = not_assigned_menus
        returnObj['assigned_menus'] = assigned_menus

        return returnObj
コード例 #4
0
ファイル: role_manage.py プロジェクト: Orientsoft/user-server
    def post(self):
        from models.role import Role, RoleHasApi, RoleHasMenu
        from models.menu import Menu, MenuHasApi

        from app import db
        try:
            role_id = request.json.get('id')
            if not Role.check_role(self.app_id, role_id):
                return '权限错误', 400
            now_menus = request.json.get('menu_ids')
            old_menus = RoleHasMenu.get_menu(role_id)
            need_delete = list(set(old_menus) - set(now_menus))
            need_add = list(set(now_menus) - set(old_menus))
            for n in need_add:
                if Menu.check_menu(self.app_id, n):
                    m = RoleHasMenu()
                    m.role_id = role_id
                    m.menu_id = n
                    db.session.add(m)
                    # 查询menu_has_api,   menu_id拥有的俄api_id,自动添加到role_has_api中
                    temp = MenuHasApi.get_api(n)
                    for x in temp:
                        rha = RoleHasApi()
                        rha.role_id = role_id
                        rha.api_id = x
                        db.session.add(rha)

            for d in need_delete:
                if Menu.check_menu(self.app_id, d):
                    m = RoleHasMenu.query.filter_by(role_id=role_id,
                                                    menu_id=d).first()
                    # 查询 menu_has_api,  menu_id拥有的api_id,删除role_has_api
                    temp = MenuHasApi.get_api(m.menu_id)
                    for x in temp:
                        c = RoleHasApi.query.filter_by(role_id=role_id,
                                                       api_id=x).first()
                        db.session.delete(c)
                    db.session.delete(m)
            db.session.commit()
        except Exception as e:
            db.session.rollback()
コード例 #5
0
ファイル: role_manage.py プロジェクト: Orientsoft/user-server
    def get(self):
        # 根据role_id查询对应的api_id。
        # 需返回已分配的,和未分配的API
        from models.role import Role, RoleHasApi
        from models.api import Api
        returnObj = {}
        assigned_apis = []
        not_assigned_apis = []
        role_id = request.args.get('id')
        if not Role.check_role(self.app_id, role_id):
            return '权限错误', 400

        assigned_apis_in_db = RoleHasApi.query.filter_by(role_id=role_id).all()
        all_apis_in_db = Api.query.filter_by(app_id=self.app_id).all()

        assigned_api_ids = []
        for a in assigned_apis_in_db:
            assigned_api_ids.append(a.api_id)
            assigned_apis.append({
                'id': a.api_id,
                'path': a.api.path,
                'method': a.api.method,
                'remark': a.api.remark
            })
        assigned_api_ids = set(assigned_api_ids)

        for a in all_apis_in_db:
            if a.id not in assigned_api_ids:
                not_assigned_apis.append({
                    'id': a.id,
                    'path': a.path,
                    'method': a.method,
                    'remark': a.remark
                })

        returnObj['not_assigned_apis'] = not_assigned_apis
        returnObj['assigned_apis'] = assigned_apis

        return returnObj