|
|
|
'use strict';
|
|
|
|
|
|
|
|
const groups = require('../../groups');
|
|
|
|
|
|
|
|
const Groups = module.exports;
|
|
|
|
|
|
|
|
Groups.create = async function (socket, data) {
|
|
|
|
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);
|
|
|
|
};
|