feat: 移除身份组的时候顺便移除已有成员的该角色

pull/56/head
moonrailgun 2 years ago
parent 1f93e24fbc
commit ed2b949405

@ -260,6 +260,7 @@ export class Group extends TimeStamps implements Base {
const member = group.members.find(
(member) => String(member.userId) === userId
);
if (!member) {
throw new Error('Not Found Member');
}

@ -807,7 +807,7 @@ class GroupService extends TcService {
const [hasPermission] = await call(ctx).checkUserPermissions(
groupId,
userId,
[PERMISSION.core.managePanel]
[PERMISSION.core.manageRoles]
);
if (!hasPermission) {
throw new NoPermissionError(t('没有操作权限'));
@ -822,7 +822,8 @@ class GroupService extends TcService {
$pull: {
roles: {
_id: roleId,
},
}, // 删除角色
'members.$[].roles': roleId, // 删除成员角色
},
},
{

@ -1,9 +1,10 @@
import { createTestServiceBroker } from '../../utils';
import GroupService from '../../../services/core/group/group.service';
import { Types } from 'mongoose';
import { Group, GroupPanelType } from '../../../models/group/group';
import type { Group } from '../../../models/group/group';
import { generateRandomStr } from '../../../lib/utils';
import _ from 'lodash';
import { GroupPanelType, PERMISSION } from 'tailchat-server-sdk';
function createTestGroup(
userId: Types.ObjectId = new Types.ObjectId(),
@ -38,7 +39,13 @@ function createTestRole(
describe('Test "group" service', () => {
const { broker, service, insertTestData } =
createTestServiceBroker<GroupService>(GroupService);
createTestServiceBroker<GroupService>(GroupService, {
contextCallMockFn(actionName) {
if (actionName === 'group.getUserAllPermissions') {
return [PERMISSION.core.owner];
}
},
});
test('Test "group.createGroup"', async () => {
const userId = String(new Types.ObjectId());
@ -310,6 +317,12 @@ describe('Test "group" service', () => {
const testGroup = await insertTestData(
createTestGroup(userId, {
roles: [role1, role2],
members: [
{
userId,
roles: [role1.id, role2.id],
},
],
})
);
@ -320,7 +333,7 @@ describe('Test "group" service', () => {
'group.deleteGroupRole',
{
groupId: String(testGroup.id),
roleId: testGroup.roles?.[0]._id,
roleId: String(role1.id),
},
{
meta: {
@ -336,6 +349,12 @@ describe('Test "group" service', () => {
permissions: ['permission1', 'permission2'],
},
]);
expect(res.members).toMatchObject([
{
userId,
roles: [role2.id],
},
]);
});
test('Test "group.updateGroupRolePermission"', async () => {

Loading…
Cancel
Save