예제 #1
0
    def auth_user_role_detail(cls, account_id) -> dict:
        acc: Accounts = Accounts.select(Accounts).where(
            Accounts.id == account_id).first()
        rs = AuthUser.select().where(AuthUser.acc_id == account_id)
        auth_user_dict = {
            'acc':
            Accounts.to_dict(
                acc, BASE_FIELDS + [
                    "id", "password", "fuzzy_id", "login_token",
                    "login_updated_at", "pin"
                ])
        }
        if rs:
            au: AuthUser = rs[0]
            auth_user_dict['au'] = {
                'oid': au.org_id,
                'rfid': au.ref_id,
                'rid': au.role_id,
                't': au.type
            }
            auth_user_dict['role'] = cls._get_roles(au)
            role_list = []
            role_obj_list = Role.select()
            for r in role_obj_list:
                role_list.append(Role.to_dict(r, BASE_FIELDS))
            auth_user_dict['roles'] = role_list

        return auth_user_dict
예제 #2
0
 def query_role_list(cls, ids):
     data_list = Role.select().where(Role.id.in_(ids))
     rs = []
     for obj in data_list:
         obj_dict = Role.to_dict(obj, BASE_FIELDS)
         rs.append(obj_dict)
     return rs
예제 #3
0
    def role_list(self, page):
        offset = int(page) * self.max_page_size
        role_list, has_next = AuthDao.role_list(offset,
                                                self.max_page_size,
                                                transfer_to_dict=False)

        role_dict_list = [Role.to_dict(r, BASE_FIELDS) for r in role_list]
        parent_ids = {r['id']: r for r in role_dict_list}
        _ids = []
        for r in role_dict_list:
            base_fun_list = AuthDao.get_base_funs(r['base_fun'])
            r['base_fun_list'] = base_fun_list
            if r['ext_fun']:
                ext_codes = r['ext_fun'].split(',')
                r['ext_fun_list'] = AuthDao.get_ext_funs(ext_codes)
            if r['parent'] in parent_ids:
                r['p'] = parent_ids[r['parent']]
            else:
                _ids.append(r['parent'])
        if _ids:
            p_list = AuthDao.query_role_list(_ids)
            p = {r['id']: r for r in p_list}
            for r in role_dict_list:
                if r['parent'] in p:
                    r['p'] = p[r['parent']]
        for r in role_list:
            bind_dict = AuthDao.bind_parent_role_detail(r)
            parent_ids[r.id]['parent_role_detail'] = bind_dict
        return role_dict_list, has_next
예제 #4
0
 def role_list(cls, offset=0, page_size=30, transfer_to_dict=True):
     data_list = Role.select().offset(offset).limit(page_size)
     rs = []
     n = 0
     for obj in data_list:
         if transfer_to_dict:
             obj_dict = Role.to_dict(obj, BASE_FIELDS)
         else:
             obj_dict = obj
         rs.append(obj_dict)
         n = n + 1
     return rs, n == page_size
예제 #5
0
    def _get_roles(cls, au: AuthUser):
        rs = {}
        role_ids = []
        origin_role_ids = [au.role_id]
        role_extends_list = RoleExtend.select().where(
            RoleExtend.role_id.in_(origin_role_ids))
        if role_extends_list:
            rs['base'] = role_extends_list[0]
            role_extend: RoleExtend = None
            for role_extend in role_extends_list:
                role_ids.append(role_extend.parent)
        role_list = Role.select().where(Role.id.in_(origin_role_ids +
                                                    role_ids))
        base_rs = 0
        ext_fun_list = []
        default_path_list = []
        role: Role = None
        base_role = {'roles': []}
        rs['base'] = base_role
        for role in role_list:
            if role.id in origin_role_ids:
                base_role['roles'].append(
                    Role.to_dict(role, ['created_at', 'updated_at', 'parent']))
                default_path_list.append(role.default_path)
            if role.ext_fun and role.ext_fun not in ext_fun_list:
                ext_codes = role.ext_fun.split(',')
                ext_fun_list = ext_fun_list + ext_codes
            base_rs = base_rs | role.base_fun
        # 解析为可读 功能点
        base_role['fun'] = fun_dict = {}
        fun_dict['base'] = cls._get_base_funs(base_rs)
        fun_dict['ext'] = cls._get_ext_funs(ext_fun_list)
        fun_dict['paths'] = default_path_list
        role_extends_list = RoleExtend.select(RoleExtend).join(
            UserRoleExtend,
            on=(UserRoleExtend.role_id == RoleExtend.role_id)).where(
                UserRoleExtend.acc_id == au.acc_id)
        ext_origin_role_ids = []
        ext_role_ids = []
        if role_extends_list:
            role_extend: RoleExtend = None
            for role_extend in role_extends_list:
                ext_role_ids.append(role_extend.parent)
                if role_extend.role_id not in ext_origin_role_ids:
                    ext_origin_role_ids.append(role_extend.role_id)
            role_list = Role.select().where(
                Role.id.in_(ext_origin_role_ids + ext_role_ids))
            ext_base_rs = 0
            ext_ext_fun_list = []
            ext_default_path_list = []
            ext_role = {'roles': []}
            rs['ext'] = ext_role

            for role in role_list:
                if role.id in ext_origin_role_ids:
                    ext_role['roles'].append(
                        Role.to_dict(role,
                                     ['created_at', 'updated_at', 'parent']))
                    ext_default_path_list.append(role.default_path)
                if role.ext_fun and role.ext_fun not in ext_ext_fun_list:
                    ext_codes = role.ext_fun.split(',')
                    ext_ext_fun_list = ext_ext_fun_list + ext_codes
                ext_base_rs = ext_base_rs | role.base_fun
            # 解析为可读 功能点
            ext_role['fun'] = fun_dict = {}
            fun_dict['base'] = cls._get_base_funs(ext_base_rs)
            fun_dict['ext'] = cls._get_ext_funs(ext_ext_fun_list)
            fun_dict['paths'] = ext_default_path_list
        return rs