身份组管理

更新时间: 2022/12/06 06:19:39

服务器身份组

创建服务器身份组

功能介绍

调用 CreateServerRole 方法在服务器中创建一个身份组。

创建服务器的时候,会自动创建@所有人身份组。该身份组的权限配置只有服务器创建者可修改。

参数说明

参数 类型 说明
info.role_icon QChatRoleInfoBase 服务器图片
anti_spam_info {} QChatBusinessAntiSpamInfo 配置反垃圾信息,可配置反垃圾文本业务 ID 或 反垃圾图片业务 ID。

示例代码

cppCreateServerRoleParam param;
param.info.server_id = 123456;
param.info.role_name = "role name";
param.info.role_icon = "role icon url";
param.info.extension = "extension";
param.info.role_type = kRoleTypeCustom;
param.info.priority = 1;
param.anti_spam_info.text_bid = "anti spam text business id";
param.anti_spam_info.pic_bid = "anti spam pic business id";
param.cb = [this](const CreateServerRoleResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::CreateServerRole(param);

删除服务器身份组

功能介绍

调用 DeleteServerRole 方法从服务器中删除指定身份组。

示例代码

cppDeleteServerRoleParam param;
param.server_id = 123456;
param.role_id = 123456;
param.cb = [this](const DeleteServerRoleResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::DeleteServerRole(param);

更新服务器身份组

功能介绍

调用 UpdateServerRole 方法更新服务器中指定身份组, 可更新的身份组信息包括身份组名称、身份组图片、身份组权限配置等。

仅自定义身份组(即 QChatRoleInfoBaserole_type 值为 2 的身份组)支持调用该方法更新信息。创建服务器时默认创建的 @everyone 身份组(即 role_type 值为 1 的身份组),不支持调用该方法更新信息,仅支持修改权限。如调用该方法更新 @everyone 身份组信息(身份组的名称,图标,自定义扩展,优先级),将报错(错误码 403).

参数说明

参数 类型 说明
role_icon QChatRoleInfoBase 服务器图片
anti_spam_info {} QChatBusinessAntiSpamInfo 配置反垃圾信息,可配置反垃圾文本业务 ID 或 反垃圾图片业务 ID。
permissions QChatPermission 配置身份组权限。如 kPermissionBanServerMember表示封禁服务器成员的权限,具体权限类型可参见NIMQChatPermissions

9.3.0 版本新增申请邀请管理权限以及申请邀请历史查看权限类型。

示例代码

cppUpdateServerRoleParam param;
param.info.server_id = 123456;
param.info.role_id = 123456;
param.info.role_name = "role name";
param.info.role_icon = "role icon url";
param.info.extension = "extension";
param.info.permissions[kPermissionManageServer] = kPermissionSwitchAllow;
param.info.permissions[kPermissionManageChannel] = kPermissionSwitchDeny;
param.info.permissions[kPermissionManageRole] = kPermissionSwitchExtend;
param.info.permissions[kPermissionBanServerMember] = kPermissionSwitchAllow
param.anti_spam_info.text_bid = "anti spam text business id";
param.anti_spam_info.pic_bid = "anti spam pic business id";
// ...
param.info.priority = params["priority"].asUInt64();
param.cb = [this](const UpdateServerRoleResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::UpdateServerRole(param);

批量更新身份组优先级

功能介绍

调用 UpdateServerRolePriorities 方法批量更新服务器身份组优先级。

如您具备修改身份组优先级权限,则服务器会应用您传递的参数中身份组优先级列表所有的内容。 比如在 UI 展示中,允许拖拽对身份组优先级进行排序,则在排序完成后将最终的排序列表传递到参数中即可。

示例代码

cppUpdateServerRolePrioritiesParam param;
param.server_id = 123456;
param.priority_map = {{123456, 1}, {234567, 2}};
param.cb = [this](const UpdateServerRolePrioritiesResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::UpdateServerRolePriorities(param);

查询服务器身份组

功能介绍

调用 GetServerRoles 方法获取指定服务器下已创建的身份组列表, 从指定优先级开始分页查询

示例代码

cppGetServerRolesParam param;
param.server_id = 123456;
param.limit = 20;
param.priority = 1;
param.cb = [this](const GetServerRolesResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::GetServerRoles(param);

添加服务器身份组成员

功能介绍

你可通过 AddMembersToServerRole 方法添加部分成员到服务器指定的身份组中。

示例代码

cppAddMembersToServerRoleParam param;
param.server_id = 123456;
param.role_id = 123456;
param.members_accids = {"accid1", "accid2"};
param.cb = [this](const AddMembersToServerRoleResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::AddMembersToServerRole(param);

删除服务器身份组成员

功能介绍

调用 RemoveMembersFromServerRole 方法从服务器指定身份组移除部分成员。

示例代码

cppRemoveMembersFromServerRoleParam param;
param.server_id = 123456;
param.role_id = 123456;
param.members_accids = {"accid1", "accid2"};
param.cb = [this](const RemoveMembersFromServerRoleResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::RemoveMembersFromServerRole(param);

查询服务器身份组成员

功能介绍

调用 GetMembersFromServerRole 方法,从服务器指定身份组中分页查询成员列表。

仅自定义身份组(即 QChatRoleInfoBaserole_type 值为 2 的身份组)支持调用该方法查询身份组成员。创建服务器时默认创建的 @everyone 身份组(即role_type 值为 1 的身份组),不支持查询成员信息,@everyone 身份组默认包含所有身份组成员。如调用该方法查询 @everyone 身份组成员,将报错(错误码 403).

示例代码

cppGetMembersFromServerRoleParam param;
param.server_id = 123456;
param.role_id = 123456;
param.timestamp = 0;
param.limit = 20;
param.begin_account_id = "";
param.cb = [this](const GetMembersFromServerRoleResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::GetMembersFromServerRole(param);

查询指定用户所在身份组列表

功能介绍

通过 GetRolesByAccid 方法,您可根据用户 ID 获取其已经分配的身份组列表。

示例代码

cppGetRolesByAccidParam param;
param.server_id = 123456;
param.timestamp = 0;
param.limit = 20;
param.account_id = "accid1";
param.cb = [this](const GetRolesByAccidResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::GetRolesByAccid(param);

批量查询用户所在服务器身份组列表

功能介绍

通过 GetExistingServerRolesByAccids 方法,您可根据一组用户列表查询该列表下已存在的身份组列表信息。

示例代码

cppGetExistingServerRolesByAccidsParam param;
param.server_id = 123456;
param.account_ids = {"accid1", "accid2"};
param.cb = [this](const GetExistingServerRolesByAccidsResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
    // if accid2 is not in any role, then resp will only return roles which has accid1
};
Role::GetExistingServerRolesByAccids(param);

查询身份组是否包含指定成员

功能介绍

通过 GetExistingAccidsInServerRole 方法,可查询服务器某身份组是否包含指定成员。

示例代码

cppGetExistingAccidsInServerRoleParam param;
param.server_id = 123456;
param.role_id = 123456;
param.account_ids = {"accid1", "accid2"};
param.cb = [this](const GetExistingAccidsInServerRoleResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::GetExistingAccidsInServerRole(param);
    }));

查询当前用户是否拥有特定权限

功能介绍

通过 CheckPermission 方法可查询当前登录用户是否拥有特定权限 示例代码

cpp
QChatCheckPermissionParam param;
param.server_id = 123456;
param.channel_id = 123456; // set to zero if you want to check permission in server
param.permission = kPermissionManageChannel;
param.cb = [this](const CheckPermissionResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::CheckPermission(param);

频道身份组

添加频道身份组

功能介绍

可通过 AddChannelRole 方法添加一个身份组到频道。

示例代码

cppAddChannelRoleParam param;
param.server_id = 123456;
param.parent_role_id = 123456; // i.e. server role id
param.channel_id = params["channel_id"].asUInt64();
param.cb = [this](const AddChannelRoleResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::AddChannelRole(param);

移除频道身份组

功能介绍

可通过 RemoveChannelRole 方法从频道中移除指定身份组。

示例代码

cppRemoveChannelRoleParam param;
param.server_id = 123456;
param.channel_id = 123456;
param.role_id = 123456;
param.cb = [this](const RemoveChannelRoleResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::RemoveChannelRole(param);

更新频道身份组

功能介绍

可通过 UpdateChannelRole 方法更新频道中指定身份组的信息。

示例代码

cppUpdateChannelRoleParam param;
param.server_id = params["server_id"].asUInt64();
param.role_id = params["role_id"].asUInt64();
param.channel_id = params["channel_id"].asUInt64();
param.permissions[kPermissionManageChannel] = kPermissionSwitchAllow;
param.permissions[kPermissionManageRole] = kPermissionSwitchDeny;
param.permissions[kPermissionSendMessage] = kPermissionSwitchExtend;
// ...
param.cb = [this](const UpdateChannelRoleResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::UpdateChannelRole(param);

查询频道身份组

功能介绍

可通过 GetChannelRoles 方法获取频道下所有已分配的身份组信息。

示例代码

cppGetChannelRolesParam param;
param.server_id = 123456;
param.channel_id = 123456;
param.timestamp = 0;
param.limit = 20;
param.cb = [this](const GetChannelRolesResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::GetChannelRoles(param);

批量查询已存在频道身份组列表

功能介绍

通过 GetExistingChannelRolesByServerRoleIds 方法,您可根据一组身份组列表查询频道中已经存在的身份组。

示例代码

cppGetExistingChannelRolesByServerRoleIdsParam param;
param.server_id = 123456;
param.role_ids = {123456, 234567};
param.cb = [this](const GetExistingChannelRolesByServerRoleIdsResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::GetExistingChannelRolesByServerRoleIds(param);

用户特殊权限

添加频道成员特殊权限

功能介绍

通过 AddMemberRole 方法,您可在频道中添加针对指定人的特殊权限配置。

示例代码

cppAddMemberRoleParam param;
param.server_id = 123456;
param.channel_id = 123456;
param.account_id = "accid1";
param.cb = [this](const AddMemberRoleResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::AddMemberRole(param);

移除频道成员特殊权限

功能介绍

通过 RemoveMemberRole 方法,您可从频道中移除指定人的特殊权限配置。

示例代码

cppRemoveMemberRoleParam param;
param.server_id = 123456;
param.channel_id = 123456;
param.account_id = "accid1";
param.cb = [this](const RemoveMemberRoleResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::RemoveMemberRole(param);

更新频道成员特殊权限

功能介绍

通过 UpdateMemberRole 方法,您可更新频道中指定人的特殊权限配置。

调用该接口需要管理角色权限。如没有该权限,调用将返回 403 错误码。

示例代码

cppUpdateMemberRoleParam param;
param.server_id = 123456;
param.channel_id = 123456;
param.account_id = "accid1";
param.permissions[kPermissionManageChannel] = kPermissionSwitchAllow;
param.permissions[kPermissionManageRole] = kPermissionSwitchDeny;
param.permissions[kPermissionSendMessage] = kPermissionSwitchExtend;
// ...
param.cb = [this](const UpdateMemberRoleResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::UpdateMemberRole(param);

查询频道成员特殊权限

功能介绍

通过 GetMemberRoles 方法,您可分页获取频道下所有针对人的特殊权限配置列表。

调用该接口需要拥有

示例代码

cppGetMemberRolesParam param;
param.server_id = 123456;
param.channel_id = 123456;
param.timestamp = 0;
param.limit = 20;
param.cb = [this](const GetMemberRolesResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::GetMemberRoles(param);

批量查询已存在特殊用户权限列表

功能介绍

通过 GetExistingAccidsOfMemberRoles 方法,您可根据一组用户 ID 查询指定频道下的定制权限信息

示例代码

cppGetExistingAccidsOfMemberRolesParam param;
param.server_id = 123456;
param.account_ids = {"accid1", "accid2"};
param.cb = [this](const GetExistingAccidsOfMemberRolesResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::GetExistingAccidsOfMemberRoles(param);

查询当前用户是否拥有某些权限

调用CheckPermissions方法,可指定服务器和频道查询自己是否拥有某些权限(单次最多可查 10 个权限)。

示例代码如下:

cppQChatCheckPermissionsParam param;
param.server_id = 123456;
param.channel_id = 123456; // set to zero if you want to check permission in server
param.permissions = {kPermissionManageChannel, kPermissionSendMessage};
param.cb = [this](const QChatCheckPermissionsResp& resp) {
    if (resp.res_code != NIMResCode::kNIMResSuccess) {
        // error handling
        return;
    }
    // process response
    // ...
};
Role::CheckPermissions(param);
此文档是否对你有帮助?
有帮助
去反馈
  • 服务器身份组
  • 创建服务器身份组
  • 功能介绍
  • 参数说明
  • 示例代码
  • 删除服务器身份组
  • 功能介绍
  • 示例代码
  • 更新服务器身份组
  • 功能介绍
  • 参数说明
  • 示例代码
  • 批量更新身份组优先级
  • 功能介绍
  • 示例代码
  • 查询服务器身份组
  • 功能介绍
  • 示例代码
  • 添加服务器身份组成员
  • 功能介绍
  • 示例代码
  • 删除服务器身份组成员
  • 功能介绍
  • 示例代码
  • 查询服务器身份组成员
  • 功能介绍
  • 示例代码
  • 查询指定用户所在身份组列表
  • 功能介绍
  • 示例代码
  • 批量查询用户所在服务器身份组列表
  • 功能介绍
  • 示例代码
  • 查询身份组是否包含指定成员
  • 功能介绍
  • 示例代码
  • 查询当前用户是否拥有特定权限
  • 功能介绍
  • 频道身份组
  • 添加频道身份组
  • 功能介绍
  • 示例代码
  • 移除频道身份组
  • 功能介绍
  • 示例代码
  • 更新频道身份组
  • 功能介绍
  • 示例代码
  • 查询频道身份组
  • 功能介绍
  • 示例代码
  • 批量查询已存在频道身份组列表
  • 功能介绍
  • 示例代码
  • 用户特殊权限
  • 添加频道成员特殊权限
  • 功能介绍
  • 示例代码
  • 移除频道成员特殊权限
  • 功能介绍
  • 示例代码
  • 更新频道成员特殊权限
  • 功能介绍
  • 示例代码
  • 查询频道成员特殊权限
  • 功能介绍
  • 示例代码
  • 批量查询已存在特殊用户权限列表
  • 功能介绍
  • 示例代码
  • 查询当前用户是否拥有某些权限