组织权限 API

企业门户应用中的 UAA 模块提供组织相关表和 API,权限组件提供权限相关表和 API,OPM 模块提供组织角色 API。

组织权限相关表访问原则为

  • 增删改使用组织和权限提供的API
  • 查询使用 dbrest,使用 API 参考《数据访问接口》,使用 SDK 参考《Java SDK

系统支持在其他应用中,调用企业门户应用的数据和服务,参考《云 IDE》中的租户内跨应用调用数据和服务

组织用户 API

增删改组织和用户 postOrgs

com.justep.clients.api.UaaAcountApi 类提供 postOrgs 方法,实现组织和人员的增删改,方法定义如下。注意:组织 id 和人员 id 必须唯一,不能出现组织 id 和人员 id 相同的情况

方法:
    String postOrgs(String var1);
URL:
    /entry/uaa/org/postOrgs
请求方式:
    POST
参数:
{
    "orgFNameSeparator": "/",       //全路径名称分隔符,默认为/,可在参数配置中配置
    "data": {
        "type": "delta",            //取值范围: 增量(delta), 全量(all)
        "users": [{                 //用户信息
            "state": "upsert",      //当 type=delta 时生效,  delete/upsert。全量时不设置
            "id": "",               //主键
            "orgs":[ "",""],        //所属组织的 id 列表,和 addOrgs/deleteOrgs 不能同时出现
            "addOrgs": [],          //增加的组织 id 列表
            "deleteOrgs": [],       //删除的组织 id 列表
            "mainOrg": "",          //主组织的 id
            "created": null,        //创建时间
            "username": "",         //登录用户名
            "name": "",             //用户中文名称
            "verified": 1,          //账号状态
            "active": 1,            //用户状态
            "email": "",            //email
            "phoneNumber": "",      //手机号
            "address":"",           //办公地址
            "position": "",         //职位
            "description": "",      //备注
            "hiredate": "2021-07-21 00:00:00",          //入职时间
            "roles": ["", ""],                          //人员的角色 id 列表
            "addRoles": ["", ""],                       //人员新增加的角色 id 列表
            "deleteRoles": ["", ""],                    //删除的人员角色 id 列表
            "orgRoles":[{"orgid": ["roleid"]}],         //人员成员的角色 id 列表
            "addOrgRoles": [{"orgid": ["roleid"]}],     //人员成员新增加的角色 id 列表
            "deleteOrgRoles": [{"orgid": ["roleid"]}],  //删除的人员成员角色 id 列表
            "sortNumber":  1,         //排序号
            "type": "org",            //org 代表组织内人员,外部人员无需设置
            "manageOrgs": [{          //人员或人员成员的管理组织信息
                "role": "roleid",     //角色 id,主管的角色 id 是 director
                "org"; "orgid",       //管理者是人员时设置为空,管理者是人员成员时设置为父节点的 id
                "managedOrg": "orgid" //被管理组织的 id
            }],
            "addManageOrgs": [],    //内容同 manageOrgs,表示新增加的管理组织信息
            "deleteManageOrgs": [], //内容同 manageOrgs,表示要删除的管理组织信息
            "extend": {}            //扩展表中的字段
        }],
        "orgs": [{
            "state": "upsert",      //当 type=delta 时生效,  delete/upsert,全量时不设置
            "id": "",               //组织 id
            "parentID": null,       //父组织 id
            "name": "",             //组织名称
            "code": "",             //组织编码
            "type": "",             //组织类型:部门(dpt),机构(ogn),岗位(pos)
            "active": 1,            //状态
            "seq": 1,               //序号,新增时为空会自动生成,修改时设为-1会自动生成
            "roles": ["", ""],      //拥有的角色 id 列表;
            "addRoles": ["", ""],   //新增加的角色 id 列表
            "deleteRoles": ["", ""],//删除的角色 id 列表
            "manageOrgs": [{        //组织的管理组织信息
                "role": "roleid",   //角色 id,主管的角色 id 是 director
                "managedOrg": "orgid" //被管理组织的 id
            }],
            "addManageOrgs": [],    //内容同 manageOrgs,表示新增加的管理组织信息
            "deleteManageOrgs": [], //内容同 manageOrgs,表示要删除的管理组织信息
            "extend": {}            //扩展表中的字段
        }]
    }
}

下面列举几个示例

  • 添加/修改一个组织
{
    "data": {
        "type": "delta",
        "orgs": [
            {
                "id": "oUIX2Ja33wcrdbOP0Mo",
                "code": "oUIX2Kc33ZasuY7HARJ",
                "name": "销售部",
                "type": "dpt",
                "active": 1,
                "parentID": "oOg1sE033OfohXrwywU"
            }
        ]
    }
}
  • 删除多个组织
{
    "data": {
        "type": "delta",
        "orgs": [
            {
                "state": "delete",
                "id": "oUIX2Ja33wcrdbOP0Mo",
                "type": "dpt"
            }
        ]
    }
}
  • 添加/修改一个人员
{
    "data": {
        "type": "delta",
        "users": [
            {
                "id": "oUIXJkc33lKHOZTXO2k",
                "username": "wangfang",
                "name": "王芳",
                "active": 1,
                "verified": 1,
                "mainOrg": "oOg1sE033OfohXrwywU",
                "type": "org",
                "addOrgs": [
                    "oOg1sE033OfohXrwywU"
                ]
            }
        ]
    }
}
  • 删除多个人员
{
    "data": {
        "type": "delta",
        "orgs": null,
        "users": [
            {
                "state": "delete",
                "id": "oUIXJkc33lKHOZTXO2k",
                "orgs": []
            }
        ]
    }
}
  • 将组织内用户变成外部用户
{
    "data": {
        "type": "delta",
        "users": [
            {
                "id": "p1ydfTi33RPqSQIKf5b",//用户 id
                "orgs": "",
                "mainOrg": "",
                "type": null
            }
        ]
    }
}

查询组织

查询组织表 orgs,使用 dbrest,参考《数据访问接口》,表结构参考《组织权限数据表

URL
    /entry/uaa/dbrest/orgs
请求方式
    GET
示例
    fetch("https://entrylzsdev6-vip.trunk.xcaas.net/entry/uaa/dbrest/orgs?limit=20&offset=0&select=orgID%2CforgID%2CtypedID%2Cid%2CparentID%2Cname%2Ccode%2Cfcode%2Cfid%2Cfname%2Csequence%2Cseq%2Ctype%2Cleaf%2Clevel%2Cactive&order=%22seq%22.asc&(&type=neq.psm&$orgsBackFilter=eq.active&)&parentID=is.null", { 
    "method": "GET" 
    });

查询用户

查询用户表 users,使用 dbrest,参考《数据访问接口》,表结构参考《组织权限数据表

URL
    /entry/uaa/dbrest/users
请求方式
    GET

用户过期锁定

在统一通用配置的组织配置中,可以配置注册用户有效期、未登录账号冻结期限; 在统一通用配置的密码配置中,可以配置密码有效期。

企业门户应用提供“用户过期锁定” API,读取这三个配置项,根据设定的天数,将用户表中的

  • 用户状态 active 设置为0,表示用户禁用
  • 密码必须修改 passwd_change_required 设置为1,表示不修改密码不能登录
URL:
    /entry/opm/orgmanager/lockoverdueusers
请求方式:
    POST

可以在任务调度中添加定时任务,定时调用“用户过期锁定” API

组织用户其它API

com.justep.clients.api.UaaAcountApi 类提供如下 API

@ServeName("entry")
public interface UaaAcountApi {
    //注册影子账户
    @RequestLine("POST /uaa/Users/registerShadowUser")
    @Headers("Content-Type: application/json")
    JSONObject registerShadowUser(ShadowUserVO shadowUser);

    //注册用户
    @RequestLine("POST /uaa/Users/register")
    @Headers("Content-Type: application/json")
    UserVO createRegisterUser(UserVO user);

    //维护组和用户
    @RequestLine("POST /uaa/org/postGroups")
    @Headers("Content-Type: application/json")
    String postGroups(String content);
}

com.justep.clients.api.DelegationApi 类提供如下 API

@ServeName("entry")
public interface DelegationApi {
    //委托查询
    @RequestLine("GET /authorize/delegate")
    String delegate(@Param("delegationId") String var1);

    //删除委托
    @RequestLine("DELETE /authorize/delegate")
    String exitDelegate();
}

角色 API

新增角色

URL
    /entry/authorize/roles
请求方式
    POST
参数(可参考role表)
    id    角色id(必填)
    name    名称(必填)
    code    编码(必填)
    parentNode    父节点
    sequence    序号
    type    类型
    active    有效状态((必填),1为有效,0为无效)
示例
    insertRole = async (event) => {
        //最新做法:id和code一致
        let roleData = this.comp("roleData");
        let role = {
            "id": roleData.getValue("code"),
            "name": roleData.getValue("name"),
            "code": roleData.getValue("code"),
            "parentNode": roleData.getValue("parentNode"),
            "sequence": roleData.getValue("sequence"),
            "type": roleData.getValue("type"),
            "active": roleData.getValue("active")
        }

        //新增角色
        try{
            await this.addRole(this,role)
        }catch(e) {
            message.error("新增角色失败:" + e);
        };
    }

    addRole = (page,params) => {
        return page.request({
            method : "POST",
            url : "/entry/authorize/roles",
            data : JSON.stringify(params)
        });
    }

修改角色

修改角色表,不包括父角色编码和父角色名称

URL
    /entry/authorize/roles/${roleId}
请求方式
    PATCH
参数(可参考role表)
    roleId    角色id
    name    名称(必填)
    code    编码(必填)
    parentNode    父节点
    sequence    序号
    type    类型
    active    有效状态((必填),1为有效,0为无效)
示例
    updateRole : function(page,params) {
        return page.request({
            method : "PATCH",
            url : "/entry/authorize/roles/" + params.id,
            data : JSON.stringify(params)
        });
    }

修改父角色

修改角色中的父角色编码和父角色名称

URL
    /entry/authorize/roles/update/{id}
请求方式
    PATCH
参数
    id    角色id(必填)
    parentRoleCodes    父角色编码(必填,多个使用逗号分隔)
    parentRoleNames    父角色名称(必填,多个使用逗号分隔)
示例
    fetch("https://entrylzsdev6-lzsdev-ide.trunk.xcaas.net/entry/authorize/roles/update/authorities", { 
    "body": "{\"id\":\"authorities\",\"parentRoleCodes\":\"authc,internal,anonymous\",\"parentRoleNames\":\"注册用户,内部接口,匿名用户\"}",
    "method": "PATCH"  
    });

删除角色

删除角色和授权

URL
    /entry/authorize/roles/${roleId}
请求方式
    DELETE
参数
    roleId    角色id(必填)
示例
    deleteRole : function(page,params) {
        return page.request({
            method : "DELETE",
            url : "/entry/authorize/roles/" + params.id   
        });
    }

查询角色

查询角色表 role,使用 dbrest,参考《数据访问接口》,表结构参考《组织权限数据表

URL
    /entry/authorize/dbrest/role
请求方式
    GET
示例
    fetch("https://entrylzsdev6-vip.trunk.xcaas.net/entry/authorize/dbrest/role?limit=100&offset=0&select=id%2CcreatedBy%2CcreatedDate%2Cdescription%2ClastModifiedBy%2ClastModifiedDate%2Csequence%2Cactive%2Cversion%2Ccode%2Ctype%2Cname%2CparentNode%2CparentRoleCodes%2CparentRoleNames%2CsqlParamValues&order=%22name%22.asc&(&type=eq.org&$rolesBackFilter=eq.active&)", {
    "method": "GET"
    });

获取角色的所有父角色

一个角色可以设置多个父角色,形成继承关系。注意角色和父角色不能形成循环继承,即不能设置 A 角色继承 B 角色,B 角色又继承 A 角色

URL
    /entry/opm/orgmanager/quertroleforrelation?code=${code}
请求方式
    GET
参数
    code    角色编码(必填)
示例
    fetch("https://entrylzsdev6-lzsdev-ide.trunk.xcaas.net/entry/opm/orgmanager/quertroleforrelation?code=authorities", { 
    "method": "GET" 
    });

角色其它 API

com.justep.clients.api.RoleApi 类提供如下 API

@ServeName("entry")
public interface RoleApi {
    //根据角色 ID 更新角色
    @RequestLine("PATCH /authorize/roles/update/{roleid}")
    @Headers("Content-Type: application/json")
    RoleVO updateRole(RoleVO roleVO, @Param("roleid") String roleid);

    //通过角色 ID 获取权限,includeParent 表示是否包含父权限
    @RequestLine("GET /authorize/roles/{role_id}/permissions/all")
    Set<PermissionVO> getAllPermission(@Param("role_id") String roleId, @Param("limit") int limit, @Param("offset") int offset,
            @Param("includeParent") boolean includeParent);

    //获取指定角色的 SQL 参数
    @RequestLine("GET /authorize/roles/{role_id}/sqlParams")
    List<String> getRoleSqlParams(@Param("role_id") String roleId);

    //通过角色编码获取角色,包括包含的角色
    @RequestLine("GET /authorize/roles/findByCode")
    RoleVO findByCode(@Param("code") String code);

    //通过角色编码获取角色,不包括包含的角色
    @RequestLine("GET /authorize/roles/findDirectChildRoles")
    Set<RoleVO> findDirectChildRoles(@Param("code") String code);

    //通过角色类型获取角色,角色类型 type 包括 应用角色 service、业务角色 biz、组织角色 org、岗位角色 pos 等
    @RequestLine("GET /authorize/roles/findByType")
    JSONObject findByType(@Param("type") String type, @Param("pageable") Object pageable);
}

授权 API

新增授权

URL
    /entry/authorize/subjects
请求方式
    POST
参数
    sid    授权主体id(一般是组织orgid)(必填)
    code    主体编码(必填)
    name    主体名称
    description 描述(一般是人员姓名)
    role    角色(必填)
示例
    JSONObject subjectEntity = new JSONObject();
    subjectEntity.put("sid", orgId);
    subjectEntity.put("code", personCode);
    subjectEntity.put("description", personName);
    subjectEntity.put("role", "/roles/subadmin");
    ServiceUtil.post(SpringWebUtil.getRequest(), "entry", "/authorize/subjects", subjectEntity);

删除授权

URL
    /entry/authorize/subjects/search/deleteBySidAndRole?sid=${sid}&role=${role}
请求方式
    GET
参数
    sid    授权主体id(必填)
    role    角色(必填,一般通过“/roles/+角色id”拼接)
示例
    deleteSubjectBySidAndRole : function(page,params) {
        return page.request({
            method : "GET",
            dataType : "text",
            url : "/entry/authorize/subjects/search/deleteBySidAndRole?sid="
                    + params.sid + "&role=/roles/"
                    + encodeURIComponent(params.roleId)  
        });
    },

查询授权

查询授权表 authorize,使用 dbrest,参考《数据访问接口》,表结构参考《组织权限数据表

URL
    /entry/authorize/dbrest/authorize
请求方式
    GET
示例
    fetch("https://entrylzsdev6-lzsdev-ide.trunk.xcaas.net/entry/authorize/dbrest/authorize?limit=-1&offset=0&select=authorize.id%20as%20%22id%22%2Cauthorize.createdBy%20as%20%22createdBy%22%2Cauthorize.createdDate%20as%20%22createdDate%22%2Cauthorize.description%20as%20%22description%22%2Cauthorize.lastModifiedBy%20as%20%22lastModifiedBy%22%2Cauthorize.lastModifiedDate%20as%20%22lastModifiedDate%22%2Cauthorize.sequence%20as%20%22sequence%22%2Cauthorize.active%20as%20%22active%22%2Cauthorize.version%20as%20%22version%22%2Cauthorize.subjectId%20as%20%22subjectId%22%2Cauthorize.subjectCode%20as%20%22subjectCode%22%2Cauthorize.subjectType%20as%20%22subjectType%22%2Cauthorize.subjectName%20as%20%22subjectName%22%2Cauthorize.role%20as%20%22role%22%2Crole.type%20as%20%22role_type%22%2Crole.name%20as%20%22role_name%22&join=authorize.inner.role%5Brole.eq.id%5D&order=%22sequence%22.asc%2C%22subjectName%22.asc%2C%22role_name%22.asc&authorize.subjectId=in.CGcZwgh5D8FwxsonfMK%40oR6vFME33Y5nfMk1UOs%2CCGcZwgh5D8FwxsonfMK", {  
    "method": "GET"  
    });

获取拥有某个角色的组织

AuthorizeApi 类提供 getRoleSubjectsByCode 方法,获取拥有某个角色的组织,支持获取直接分配的组织和通过子角色间接分配的组织,方法定义如下

方法
    List<SubjectVO> getRoleSubjectsByCode(@Param("roleCode") String var1, @Param("direct") boolean var2,
        @Param("sort") String var3, @Param("filter") String var4, @Param("offset") int var5,
        @Param("limit") int var6);
URL
    /entry/authorize/roles/code/角色code/subjects?direct=true&sort=description,asc
请求方式
    GET
参数
    roleCode:角色编码
    direct:true 只包括当前角色分配的组织,false 也包括通过子角色间接分配的组织
    sort:排序,格式为:列名,方向(升序 asc,降序 desc),例如按 description 列排升序:description,asc
    filter:过滤条件
    offset、limit:分页参数
返回值
    [
        {
            "id": ,             //授权记录id
            "code": ,           //授权主体id,授权到组织,则为组织id,授权到人员成员,则为/父组织id/人员id
            "name": ,           //授权主体code,对应组织和人员的code
            "description": ,    //授权主体fname,对应组织和人员的fname
            "role": {
                "id": "modelAdmin",     //角色id
                "code": "modelAdmin",   //角色code
                "name": "模型管理员",    //角色名称
                "parentRoleCodes": "",  //父角色code,多个父角色使用逗号分隔
                "parentRoleNames": "",  //父角色名称,多个父角色使用逗号分隔
            },
            "roleId": "modelAdmin"      //角色id
        }
    ]

案例:获取拥有模型管理员角色的组织,模型管理员角色的 code 为 modelAdmin,请求地址为

/entry/authorize/roles/code/modelAdmin/subjects?direct=true&sort=description,asc

返回结果为

[
    {
        "id": "7552a46b9c0e4f83afe5b5476035cfc2",
        "code": "/9ebd043d-ca11-4db9-afda-f649f1b0a3f1/62d8f697-d307-4e9d-8399-eff9fba64c41",
        "name": "t13804070003",
        "description": "/设计院/数字化中心/G3",
        "role": {
            "id": "modelAdmin",
            "code": "modelAdmin",
            "name": "模型管理员",
            "parentRoleCodes": "",
            "parentRoleNames": "",
        },
        "roleId": "modelAdmin"
    },
    {
        "id": "682a70f79ce74c8197a15e926154c2e0",
        "code": "/f15c6ab8-9355-4967-866a-7d416578ac37/0cbc85dc-7a42-427b-8c65-a212665983fa",
        "name": "138",
        "description": "/设计院/设计部/模管一",
        "role": {
            "id": "modelAdmin",
            "code": "modelAdmin",
            "name": "模型管理员",
            "parentRoleCodes": "",
            "parentRoleNames": "",
        },
        "roleId": "modelAdmin"
    }
]

获取某个组织的所有角色

返回角色列表,角色中包含父角色等信息

URL
    /entry/authorize/subjects/sid/roles?sid=${orgID}
请求方式
    GET
参数
    orgID    授权主体(必填)
示例
    fetch("https://entrylzsdev6-lzsdev-ide.trunk.xcaas.net/authorize/subjects/sid/roles?sid=system", {  
    "method": "GET" 
    });

获取某个组织下拥有某个角色的人员

企业门户应用提供“获取某个组织下拥有某个角色的人员”API,说明如下

URL:
    /entry/opm/orgauth/queryorghasrole?roleId={roleId}&orgFid={orgFid}
请求方式:
    GET
参数:
    roleId:角色的 id(必填)
    orgFid:组织的 fid(必填)
    personName:人员姓名(模糊查询)(非必填)(47)
返回值:
    返回人员的 id、姓名、全路径 id、全路径名称和全路径编码的 JSON 数组
    [
        {
            "id": "",
            "name": "",
            "fid": "",
            "fname": "",
            "fcode": ""
        }
    ]

案例:获取开发部下拥有合同审批角色的人员。开发部的 fid 为 /oDJaLi833XQoQQTS2fl.ogn/oDSYPbG33UYpIIg1BII.dpt,合同审批角色的 id 为 oIFgHHe338T3G1pMIDe,请求地址为:

/entry/opm/orgauth/queryorghasrole?roleId=oIFgHHe338T3G1pMIDe&orgFid=/oDJaLi833XQoQQTS2fl.ogn/oDSYPbG33UYpIIg1BII.dpt

返回结果为

[
    {
        "id": "oIzH99633STExJZmcv6",
        "name": "zhangsan",
        "fid": "/oDJaLi833XQoQQTS2fl.ogn/oDSYPbG33UYpIIg1BII.dpt/oNyGkqQ33Bgprm0H31G.pos/oIzH99633STExJZmcv6.psm",
        "fname": "/阳光集团/开发部/经理/张三",
        "fcode": "/oDJaLks33GL1SIyAWqo/oDSYPi833Kjn6bl9KIE/oNyGkso33LpnbJA128G/zhangsan"
    },
    {
        "id": "oEguYlO33r5rkrVuzRy",
        "name": "liyun",
        "fid": "/oDJaLi833XQoQQTS2fl.ogn/oDSYPbG33UYpIIg1BII.dpt/oEguYlO33r5rkrVuzRy.psm",
        "fname": "/阳光集团/开发部/李云",
        "fcode": "/oDJaLks33GL1SIyAWqo/oDSYPi833Kjn6bl9KIE/liyun"
    }
]

批量权限注册

URL:
    域名+/batch/registe/service
请求方法:
    post
请求体:
    JSONObject authorizeInfo:serviceMetaInfo 中 authorize 的结构体

权限其它API

com.justep.clients.api.AuthorizeApi 类提供如下 API:

@ServeName("entry")
public interface AuthorizeApi {
    //判断是否有此权限
    @RequestLine("POST /authorize/hasConditionPermission")
    @Headers("Content-Type: application/x-www-form-urlencoded; charset=UTF-8")
    boolean hasConditionPermission(@Param("permission") String permission);

    //判断是否拥有传入的角色编码,支持同时判断多个角色
    @RequestLine("POST /authorize/hasRole")
    @Headers("Content-Type: application/x-www-form-urlencoded; charset=UTF-8")
    boolean hasRole(@Param("roles") Set<String> roles);

    //获取授权主体的权限
    @RequestLine("GET /authorize/subjects/code/permissions")
    Set<PermissionVO> getSubjectPermissions(@Param("type") String type, @Param("subjectCode") String subjectCode);

    //获取当前用户拥有的角色
    @RequestLine("GET /authorize/currentUserRoles")
    Set<RoleVO> currentUserRoles(@Param("type") String type);

    //获取当前用户拥有的权限,权限类型 type 包括菜单权限 menu、服务权限 service、界面权限 ui 等,非必填
    @RequestLine("GET /authorize/currentUserPermissions")
    JSONObject currentUserPermissions(@Param("type") String type);

    //删除指定的授权主体
    @RequestLine("DELETE /authorize/subjects/code/{subjectCode}")
    void deleteSubjectByCode(@Param("subjectCode") String subjectCode);

    //通过权限编码获取授权主体
    @RequestLine("GET /authorize/getSubjectsByPermission")
    Set<SubjectVO> getSubjectsByPermission(@Param("permission") String permission);

    //获取拥有某个角色的组织
    @RequestLine("GET /authorize/roles/code/{roleCode}/subjects")
    List<SubjectVO> getRoleSubjectsByCode(@Param("roleCode") String roleCode, @Param("direct") boolean direct,
            @Param("sort") String sort, @Param("filter") String filter, @Param("offset") int offset,
            @Param("limit") int limit);

    //从一组权限中返回有权限的集合
    @RequestLine("GET /authorize/permittedPermissions")
    Set<String> permittedPermissions(@Param("permissions") Set<String> permissions);

    //获取授权主体的角色
    @RequestLine("GET /subjects/code/roles")
    Set<RoleVO> getSubjectRoles(@Param("subjectCode") String subjectCode, @Param("subjectName") String subjectName);

    //通过权限编码获取权限
    @RequestLine("GET /authorize/permissions/search/findByCode")
    List<PermissionVO> findByCode(@Param("code") String code);

    //通过角色编码获取权限
    @RequestLine("GET /authorize/permissions/search/findByRole")
    JSONObject findByRole(@Param("role") String role, @Param("pageable") Object pageable);

    //通过权限类型获取权限
    @RequestLine("GET /authorize/permissions/search/findByType")
    List<PermissionVO> findByType(@Param("type") String type);

    //获取应用的所有权限
    @RequestLine("GET /authorize/permissions/search/list")
    List<PermissionVO> list(@Param("serviceName") String serviceName);

    //使用通配符获取多个权限,wildcardCodes 是支持通配符的权限 code 集合
    @RequestLine("GET /authorize/permissions/search/findByWildcardCode")
    List<PermissionVO> findByWildcardCode(@Param("wildcardCodes") Set<String> wildcardCodes);

    //删除指定角色下的某个权限
    @RequestLine("DELETE /authorize/permissions/search/deleteByCodeAndRole")
    long deleteByCodeAndRole(@Param("code") String code, @Param("role") String role);

    //删除某个人创建的权限
    @RequestLine("DELETE /authorize/permissions/search/deleteByCreatedBy")
    Integer deleteByCreatedBy(@Param("createdBy") String createdBy);
}

组织角色 API

系统内置3个组织角色,分别是主管、子管理员和流程子管理员

新增/修改子管理员(49)

子管理员管理两个方面,一是管理的组织,二是管理的角色

URL
    /entry/opm/orgauth/saveSubadmin
请求方式
    POST
参数
    orgId        子管理员id
    personCode    子管理员编码(新增时必填,更新时需为空)
    personName    子管理员名称(新增时必填,更新时需为空)
    manageOrgID    管理组织id(必填,多个使用逗号分隔)
    manageOrgFID    管理组织全路径id(必填,多个使用逗号分隔)
    manageRoleId    管理角色id(必填,多个使用逗号分隔)
示例
    fetch("https://entrylzsdev6-vip.trunk.xcaas.net/entry/opm/orgauth/savesubadmin?manageRoleId=layout%2Cauthorities%2Corg_user&manageOrgFID=%2FoMjCV7q33iWfb4KDfmk.ogn&manageOrgID=oMjCV7q33iWfb4KDfmk&orgId=oMjNlMo33B6r1jMpfTW%40oMjCXoM33tMCmzTvo50", {
    "method": "POST"
    });

删除子管理员(49)

删除子管理员,需要删除三部分数据:授权(authorize 表)、管理的组织(manage_org 表)、管理的角色(manage_role 表)

URL
    /entry/opm/orgauth/delmanageorgrolebyrole
请求方式
    DELETE
参数
    roleId    角色id(必填)
    orgId    子管理员id(必填,多个使用逗号分隔)
示例
    fetch("https://entrylzsdev6-vip.trunk.xcaas.net/entry/opm/orgauth/delmanageorgrolebyrole?roleId=process_subadmin&orgID=oMjNlMo33B6r1jMpfTW%40oMjCXoM33tMCmzTvo50%2CoMjD6nu33w5ic90opi7%40oMjCXoM33tMCmzTvo50", {  
    "method": "DELETE" 
    });

删除组织角色成员(49)

删除组织角色成员,需要删除两部分数据:授权(authorize 表)、管理组织(manage_org)

URL
    /entry/opm/orgauth/delorgidbyroleid
请求方式
    DELETE
参数
    roleId    角色id(必填)
    orgID    主体id(必填,多个使用逗号分隔)
示例
    fetch("https://entrylzsdev6-vip.trunk.xcaas.net/entry/opm/orgauth/delorgidbyroleid?roleId=process_subadmin&orgID=oMjNlMo33B6r1jMpfTW%40oMjCXoM33tMCmzTvo50%2CoMjD6nu33w5ic90opi7%40oMjCXoM33tMCmzTvo50", {  
    "method": "DELETE" 
    });

删除组织角色(49)

删除组织角色,需要删除四部分数据:角色(role 表)、授权(authorize 表)、管理组织(manage_org)、管理角色(manage_role)

URL
    /entry/opm/orgauth/delmanageorgandrolebyroleid
请求方式
    DELETE
参数
    roleId    角色id(必填)
示例
    fetch("https://entrylzsdev6-vip.trunk.xcaas.net/entry/opm/orgauth/delmanageorgandrolebyroleid?roleId=process_subadmin", {  
    "method": "DELETE" 
    });

查询组织角色成员

返回分页数据,支持按组织名称过滤,支持在限定的组织内查找

URL
    /entry/opm/orgmanager/findmanageorgsbyrole
请求方式
    GET
参数
    roleid    角色id(必填)
    page    页码(必填)
    size    每页数据量(必填)
    searchWord    组织名称,用于模糊搜索
    orgRange    组织id(多个使用逗号分隔),用于限定组织范围
示例
    fetch("https://entrylzsdev6-lzsdev-ide.trunk.xcaas.net/entry/opm/orgmanager/findmanageorgsbyrole?size=20&roleid=director&searchWord=ceshi&page=1", { 
    "method": "GET" 
    });

获取管理者和管理组织

在企业门户应用中,提供4个 API 用于查询组织角色中的管理者和管理组织,API 定义如下图所示

1718783553188

获取管理者

提供3个 API 用于获取管理者,分别是:获取管理者、根据角色编码获取管理者、获取主管

获取管理者
描述:
    根据管理组织中的人员成员全路径 ID 和角色 ID,查找管理者
方法:
    public String getManager(String personFID,String roleID)
参数:
    personFID:人员成员全路径 ID,支持传入多个,使用逗号分隔
    roleID:角色 ID
返回值:
    管理者对应的组织机构表 orgs 中的数据
前端调用地址:
    /entry/opm/flow/getmanager
根据角色编码获取管理者
描述:
    根据管理组织中的人员成员全路径 ID 和角色编码,查找管理者
方法:
    public String getManagerByRoleCode(String personFID,String roleCode)
参数:
    personFID:用户全路径 ID,支持传入多个,使用逗号分隔
    roleCode:角色编码
返回值:
    管理者对应的组织机构表 orgs 中的数据
前端调用地址:
    /entry/opm/flow/getmanagerbyrolecode
获取主管
描述:
    根据管理组织中的人员成员全路径 ID 和指定级别,查找主管,如果指定级别没有主管会继续往上查找
方法:
    public String getDirector(String personFID, Integer level)
参数:
    personFID:用户全路径 ID,支持传入多个,使用逗号分隔
    level:根据 level 获取指定级别的部门,1为当前部门,2为上一级部门,以此类推
返回值:
    管理者对应的组织机构表 orgs 中的数据
前端调用地址:
    /entry/opm/flow/getdirector

获取管理组织

根据角色编码获取管理组织
描述:
    根据管理者的组织 ID 和角色编码,查找管理组织
方法:
    public String getManageOrgsByRoleCode(String orgId,String roleCode)
参数:
    orgId:组织 ID,不支持传入多个
    roleCode:角色编码
返回值:
    管理组织对应的组织机构表 orgs 中的数据
前端调用地址:
    /entry/opm/flow/getmanageorgsbyrolecode

results matching ""

    No results matching ""