From 68ecf41ecf25d25c8a5f90ef4390c137b7af78ba Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Thu, 30 Apr 2020 14:48:11 -0400 Subject: [PATCH] fix(writeapi): client-side group join API call --- public/src/client/groups/details.js | 9 ++++++--- src/controllers/write/groups.js | 11 ++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/public/src/client/groups/details.js b/public/src/client/groups/details.js index f42f1141ac..ba2a0cb3e9 100644 --- a/public/src/client/groups/details.js +++ b/public/src/client/groups/details.js @@ -1,6 +1,5 @@ 'use strict'; - define('forum/groups/details', [ 'forum/groups/memberlist', 'iconSelect', @@ -9,7 +8,8 @@ define('forum/groups/details', [ 'pictureCropper', 'translator', 'vendor/colorpicker/colorpicker', -], function (memberList, iconSelect, components, coverPhoto, pictureCropper, translator) { + 'api', +], function (memberList, iconSelect, components, coverPhoto, pictureCropper, translator, api) { var Details = {}; var groupName; @@ -106,7 +106,10 @@ define('forum/groups/details', [ break; case 'join': // intentional fall-throughs! - case 'leave': + api.put('/groups/' + ajaxify.data.group.slug + '/membership/' + (uid || app.user.uid), undefined, () => ajaxify.refresh(), err => app.alertError(err.status.message)); + break; + + case 'leave': // intentional fall-throughs! case 'accept': case 'reject': case 'issueInvite': diff --git a/src/controllers/write/groups.js b/src/controllers/write/groups.js index f7a317507e..f04d17a3ce 100644 --- a/src/controllers/write/groups.js +++ b/src/controllers/write/groups.js @@ -54,19 +54,16 @@ Groups.join = async (req, res) => { }); const [isCallerOwner, userExists] = await Promise.all([ groups.ownership.isOwner(req.user.uid, group.name), - user.exists(req.user.uid), + user.exists(req.params.uid), ]); - if (group.isMember) { + if (!userExists) { + throw new Error('[[error:invalid-uid]]'); + } else if (group.isMember) { // No change return helpers.formatApiResponse(200, res); - } else if (!userExists) { - throw new Error('[[error:invalid-uid]]'); } - // console.log(res.locals.privileges); - // return res.sendStatus(200); - if (!res.locals.privileges.isAdmin) { // Admin and privilege groups unjoinable client-side if (group.name === 'administrators' || groups.isPrivilegeGroup(group.name)) {