mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-10-31 11:05:54 +01:00 
			
		
		
		
	feat: move groups.join to api
This commit is contained in:
		| @@ -2,7 +2,6 @@ | ||||
|  | ||||
| const validator = require('validator'); | ||||
| const groups = require('../groups'); | ||||
| const meta = require('../meta'); | ||||
| const user = require('../user'); | ||||
| const utils = require('../utils'); | ||||
| const slugify = require('../slugify'); | ||||
| @@ -21,52 +20,8 @@ SocketGroups.before = async (socket, method, data) => { | ||||
|  | ||||
| SocketGroups.join = async (socket, data) => { | ||||
| 	sockets.warnDeprecated(socket, 'PUT /api/v3/groups/:slug/membership/:uid'); | ||||
|  | ||||
| 	if (socket.uid <= 0) { | ||||
| 		throw new Error('[[error:invalid-uid]]'); | ||||
| 	} | ||||
|  | ||||
| 	if (typeof data.groupName !== 'string') { | ||||
| 		throw new Error('[[error:invalid-group-name]]'); | ||||
| 	} | ||||
|  | ||||
| 	if (groups.systemGroups.includes(data.groupName) || groups.isPrivilegeGroup(data.groupName)) { | ||||
| 		throw new Error('[[error:not-allowed]]'); | ||||
| 	} | ||||
|  | ||||
| 	const exists = await groups.exists(data.groupName); | ||||
| 	if (!exists) { | ||||
| 		throw new Error('[[error:no-group]]'); | ||||
| 	} | ||||
|  | ||||
| 	if (!meta.config.allowPrivateGroups) { | ||||
| 		await groups.join(data.groupName, socket.uid); | ||||
| 		logGroupEvent(socket, 'group-join', { | ||||
| 			groupName: data.groupName, | ||||
| 		}); | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| 	const results = await utils.promiseParallel({ | ||||
| 		isAdmin: await user.isAdministrator(socket.uid), | ||||
| 		groupData: await groups.getGroupData(data.groupName), | ||||
| 	}); | ||||
|  | ||||
| 	if (results.groupData.private && results.groupData.disableJoinRequests) { | ||||
| 		throw new Error('[[error:group-join-disabled]]'); | ||||
| 	} | ||||
|  | ||||
| 	if (!results.groupData.private || results.isAdmin) { | ||||
| 		await groups.join(data.groupName, socket.uid); | ||||
| 		logGroupEvent(socket, 'group-join', { | ||||
| 			groupName: data.groupName, | ||||
| 		}); | ||||
| 	} else { | ||||
| 		await groups.requestMembership(data.groupName, socket.uid); | ||||
| 		logGroupEvent(socket, 'group-request-membership', { | ||||
| 			groupName: data.groupName, | ||||
| 		}); | ||||
| 	} | ||||
| 	const slug = await groups.getGroupField(data.groupName, 'slug'); | ||||
| 	await api.groups.join(socket, { slug: slug, uid: data.uid || socket.uid }); | ||||
| }; | ||||
|  | ||||
| SocketGroups.leave = async (socket, data) => { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user