-
Notifications
You must be signed in to change notification settings - Fork 2.7k
/
groups.js
60 lines (48 loc) · 1.43 KB
/
groups.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
'use strict';
const groups = require('../../groups');
const sockets = require('..');
const Groups = module.exports;
Groups.create = async function (socket, data) {
sockets.warnDeprecated(socket, 'POST /api/v1/groups');
if (!data) {
throw new Error('[[error:invalid-data]]');
} else if (groups.isPrivilegeGroup(data.name)) {
throw new Error('[[error:invalid-group-name]]');
}
return await groups.create({
name: data.name,
description: data.description,
private: data.private,
hidden: data.hidden,
ownerUid: socket.uid,
});
};
Groups.join = async (socket, data) => {
if (!data) {
throw new Error('[[error:invalid-data]]');
}
const isMember = await groups.isMember(data.uid, data.groupName);
if (isMember) {
throw new Error('[[error:group-already-member]]');
}
return await groups.join(data.groupName, data.uid);
};
Groups.leave = async function (socket, data) {
if (!data) {
throw new Error('[[error:invalid-data]]');
}
if (socket.uid === parseInt(data.uid, 10) && data.groupName === 'administrators') {
throw new Error('[[error:cant-remove-self-as-admin]]');
}
const isMember = await groups.isMember(data.uid, data.groupName);
if (!isMember) {
throw new Error('[[error:group-not-member]]');
}
await groups.leave(data.groupName, data.uid);
};
Groups.update = async function (socket, data) {
if (!data) {
throw new Error('[[error:invalid-data]]');
}
await groups.update(data.groupName, data.values);
};