Esempio n. 1
0
    def post_user_role():
        """
        关联角色
        :return:
        """
        params_data = request.get_json()['params']
        user_id = params_data['user_id']
        role_ids = params_data['role_ids']

        if not user_id or len(user_id) < 1:
            raise Exception("参数 user_id is blank")

        # 删除旧的用户和角色的关联关系
        PermissionsRelService.del_in_uids(TPermissionsUserRoleRel(), [user_id])
        # 重新关联用户和角色
        if role_ids and len(role_ids) > 0:
            for role_id in role_ids:
                DbHelper.get_db().session.add(
                    TPermissionsUserRoleRel(
                        uid=user_id,
                        rid=role_id,
                        create_time=DateUtils.get_current_time(),
                        last_update_time=DateUtils.get_current_time()))
        return make_response(
            json.dumps(ResponseCode.response(), ensure_ascii=False))
Esempio n. 2
0
    def post_user_group():
        """
        更新用户和用户组的关联关系
        :return:
        """
        params_data = request.get_json()['params']
        user_id = params_data['user_id']
        group_ids = params_data['group_ids']
        if not user_id or len(user_id) < 1:
            raise Exception("参数 user_id is blank")

        # 删除用户和角色的关联关系
        PermissionsRelService.del_in_uids(TPermissionsUserRoleRel(), [user_id])
        # 清空老的用户和用户组之间的关联关系
        PermissionsRelService.del_in_uids(TPermissionsUserGroupRel(),
                                          [user_id])
        # 重新关联
        if group_ids and len(group_ids) > 0:
            for group_id in group_ids:
                DbHelper.get_db().session.add(
                    TPermissionsUserGroupRel(
                        uid=user_id,
                        gid=group_id,
                        create_time=DateUtils.get_current_time(),
                        last_update_time=DateUtils.get_current_time()))
        return make_response(
            json.dumps(ResponseCode.response(), ensure_ascii=False))
Esempio n. 3
0
 def post_role_group():
     """
     更新角色和用户组的关联关系
     :return:
     """
     params_data = request.get_json()['params']
     role_id = params_data['role_id']
     group_ids = params_data['group_ids']
     if not role_id or len(role_id) < 1:
         raise Exception("参数 role_id is blank")
     # 删除角色和用户组的关联关系
     PermissionsRelService.del_in_roleids(TPermissionsRoleGroupRel(),
                                          [role_id])
     # 删除角色和用户的关联关系
     PermissionsRelService.del_in_roleids(TPermissionsUserRoleRel(),
                                          [role_id])
     # 删除角色和资源的关联关系
     PermissionsRelService.del_in_roleids(TPermissionsResRoleRel(),
                                          [role_id])
     # 重新关联
     if group_ids and len(group_ids) > 0:
         for group_id in group_ids:
             DbHelper.get_db().session.add(
                 TPermissionsRoleGroupRel(
                     rid=role_id,
                     gid=group_id,
                     create_time=DateUtils.get_current_time(),
                     last_update_time=DateUtils.get_current_time()))
     return make_response(
         json.dumps(ResponseCode.response(), ensure_ascii=False))
Esempio n. 4
0
 def user_roles_uid():
     """
     获取用户的关联角色ids
     :return:
     """
     params = request.values.get("user_id")
     if not params or len(params) < 1:
         return make_response(
             json.dumps(ResponseCode.response(data=[]), ensure_ascii=False))
     role_ids = PermissionsRelService.ids_by_userid(
         TPermissionsUserRoleRel(), uid=params, select_column_name='rid')
     return make_response(
         json.dumps(ResponseCode.response(data=role_ids),
                    ensure_ascii=False))
Esempio n. 5
0
 def delete_user():
     """
     删除用户
     :return:
     """
     params_data = json.loads(request.args.get('ids'))
     if not params_data or len(params_data) < 1:
         raise Exception("参数 ids is blank")
     # 删除用户和用户组的关联关系
     PermissionsRelService.del_in_uids(TPermissionsUserGroupRel(),
                                       params_data)
     # 删除用户和角色的关联关系
     PermissionsRelService.del_in_uids(TPermissionsUserRoleRel(),
                                       params_data)
     CRUDHelper.execute_delete_by_field_in(TPermissionsUser(), params_data,
                                           'id')
     return make_response(
         json.dumps(ResponseCode.response(), ensure_ascii=False))
    def resources_by_user(uid, res_type, pid=Constants.ROOT_PID, valid_status=Constants.VALID_STATUS_Y):
        """
        通过用户id、用户类型、资源类型查资源列表(导航菜单,前台uri,后台uri)
        :param valid_status:
        :param pid: 父级id
        :param res_type: 资源类型
        :param uid: 用户id
        :return:
        """
        # 根据用户查所属的用户组
        group_ids = PermissionsRelService.ids_by_userid(TPermissionsUserGroupRel(), uid, "gid")
        if not group_ids or len(group_ids) < 1:
            return []
        # 获取用户所在的所有用户组的权限数据
        group_res_ids = PermissionsRelService.ids_in_groupids(TPermissionsResGroupRel(), group_ids, "rid")
        if not group_res_ids or len(group_res_ids) < 1:
            return []
        # 根据用户查角色ids
        role_ids = PermissionsRelService.ids_by_userid(model=TPermissionsUserRoleRel(),
                                                             uid=uid, select_column_name='rid') if uid else []
        if not role_ids or len(role_ids) < 1:
            return []
        # 根据角色查资源ids
        role_res_ids = PermissionsRelService.ids_in_roleids(TPermissionsResRoleRel(), role_ids, 'res_id')
        if not role_res_ids or len(role_res_ids) < 1:
            return []

        # 计算用户组资源集合和角色资源集合的交集得到最终用户的所有资源id
        user_res_ids = list(set(group_res_ids).intersection(set(role_res_ids)))

        # 创建查找条件
        conditions = {
            "id": user_res_ids,
            "res_type": res_type,
            "valid_status": valid_status
        }
        # 菜单资源时才有根据父查子数据
        if pid and res_type == Constants.RES_TYPE_MENU:
            conditions['pid'] = pid

        conditions['rule'] = {"id": Constants.QUERY_CONDITION_RULE_IN}
        rows = CRUDHelper.execute_select(TPermissionsResource(), conditions)
        return rows