身份组管理
更新时间: 2022/12/06 14:19:39
服务器身份组
创建服务器身份组
功能介绍
调用 CreateServerRole
方法在服务器中创建一个身份组。
创建服务器的时候,会自动创建@所有人身份组。该身份组的权限配置只有服务器创建者可修改。
参数说明
参数 | 类型 | 说明 |
---|---|---|
info.role_icon | QChatRoleInfoBase | 服务器图片 |
anti_spam_info {} | QChatBusinessAntiSpamInfo | 配置反垃圾信息,可配置反垃圾文本业务 ID 或 反垃圾图片业务 ID。 |
示例代码
CreateServerRoleParam 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
方法从服务器中删除指定身份组。
示例代码
DeleteServerRoleParam 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
方法更新服务器中指定身份组, 可更新的身份组信息包括身份组名称、身份组图片、身份组权限配置等。
仅自定义身份组(即 QChatRoleInfoBase
下 role_type
值为 2
的身份组)支持调用该方法更新信息。创建服务器时默认创建的 @everyone 身份组(即 role_type
值为 1
的身份组),不支持调用该方法更新信息,仅支持修改权限。如调用该方法更新 @everyone 身份组信息(身份组的名称,图标,自定义扩展,优先级),将报错(错误码 403).
参数说明
参数 | 类型 | 说明 |
---|---|---|
role_icon | QChatRoleInfoBase | 服务器图片 |
anti_spam_info {} | QChatBusinessAntiSpamInfo | 配置反垃圾信息,可配置反垃圾文本业务 ID 或 反垃圾图片业务 ID。 |
permissions | QChatPermission | 配置身份组权限。如 kPermissionBanServerMember 表示封禁服务器成员的权限,具体权限类型可参见NIMQChatPermissions 。 |
9.3.0 版本新增申请邀请管理权限以及申请邀请历史查看权限类型。
示例代码
UpdateServerRoleParam 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 展示中,允许拖拽对身份组优先级进行排序,则在排序完成后将最终的排序列表传递到参数中即可。
示例代码
UpdateServerRolePrioritiesParam 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
方法获取指定服务器下已创建的身份组列表, 从指定优先级开始分页查询
示例代码
GetServerRolesParam 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
方法添加部分成员到服务器指定的身份组中。
示例代码
AddMembersToServerRoleParam 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
方法从服务器指定身份组移除部分成员。
示例代码
RemoveMembersFromServerRoleParam 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
方法,从服务器指定身份组中分页查询成员列表。
仅自定义身份组(即 QChatRoleInfoBase
下 role_type
值为 2
的身份组)支持调用该方法查询身份组成员。创建服务器时默认创建的 @everyone 身份组(即role_type
值为 1
的身份组),不支持查询成员信息,@everyone 身份组默认包含所有身份组成员。如调用该方法查询 @everyone 身份组成员,将报错(错误码 403).
示例代码
GetMembersFromServerRoleParam 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 获取其已经分配的身份组列表。
示例代码
GetRolesByAccidParam 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
方法,您可根据一组用户列表查询该列表下已存在的身份组列表信息。
示例代码
GetExistingServerRolesByAccidsParam 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
方法,可查询服务器某身份组是否包含指定成员。
示例代码
GetExistingAccidsInServerRoleParam 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
方法可查询当前登录用户是否拥有特定权限
示例代码
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
方法添加一个身份组到频道。
示例代码
AddChannelRoleParam 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
方法从频道中移除指定身份组。
示例代码
RemoveChannelRoleParam 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
方法更新频道中指定身份组的信息。
示例代码
UpdateChannelRoleParam 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
方法获取频道下所有已分配的身份组信息。
示例代码
GetChannelRolesParam 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
方法,您可根据一组身份组列表查询频道中已经存在的身份组。
示例代码
GetExistingChannelRolesByServerRoleIdsParam 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
方法,您可在频道中添加针对指定人的特殊权限配置。
示例代码
AddMemberRoleParam 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
方法,您可从频道中移除指定人的特殊权限配置。
示例代码
RemoveMemberRoleParam 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
错误码。
示例代码
UpdateMemberRoleParam 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
方法,您可分页获取频道下所有针对人的特殊权限配置列表。
调用该接口需要拥有
示例代码
GetMemberRolesParam 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 查询指定频道下的定制权限信息
示例代码
GetExistingAccidsOfMemberRolesParam 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 个权限)。
示例代码如下:
QChatCheckPermissionsParam 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);