Skip to content

Commit

Permalink
fix: #12057, allow gmods to change user email
Browse files Browse the repository at this point in the history
  • Loading branch information
barisusakli committed Oct 4, 2023
1 parent 56794cf commit 344ece8
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 7 deletions.
2 changes: 1 addition & 1 deletion public/src/client/account/edit.js
Expand Up @@ -27,7 +27,7 @@ define('forum/account/edit', [
updateAboutMe();
handleGroupSort();

if (!ajaxify.data.isSelf && app.user.isAdmin) {
if (!ajaxify.data.isSelf && ajaxify.data.canEdit) {
$(`a[href="${config.relative_path}/user/${ajaxify.data.userslug}/edit/email"]`).on('click', () => {
changeEmail.init({
uid: ajaxify.data.uid,
Expand Down
7 changes: 3 additions & 4 deletions src/api/users.js
Expand Up @@ -413,10 +413,9 @@ usersAPI.getInviteGroups = async (caller, { uid }) => {
};

usersAPI.addEmail = async (caller, { email, skipConfirmation, uid }) => {
const canManageUsers = await privileges.admin.can('admin:users', caller.uid);
skipConfirmation = canManageUsers && skipConfirmation;

if (skipConfirmation) {
const isSelf = parseInt(caller.uid, 10) === parseInt(uid, 10);
const canEdit = await privileges.users.canEdit(caller.uid, uid);
if (skipConfirmation && canEdit && !isSelf) {
if (!email.length) {
await user.email.remove(uid);
} else {
Expand Down
7 changes: 5 additions & 2 deletions src/privileges/users.js
Expand Up @@ -77,17 +77,20 @@ privsUsers.canEdit = async function (callerUid, uid) {
if (parseInt(callerUid, 10) === parseInt(uid, 10)) {
return true;
}
const [isAdmin, isGlobalMod, isTargetAdmin] = await Promise.all([
const privsAdmin = require('./admin');
const [isAdmin, isGlobalMod, isTargetAdmin, canManageUsers] = await Promise.all([
privsUsers.isAdministrator(callerUid),
privsUsers.isGlobalModerator(callerUid),
privsUsers.isAdministrator(uid),
privsAdmin.can('admin:users', callerUid),
]);

const data = await plugins.hooks.fire('filter:user.canEdit', {
isAdmin: isAdmin,
isGlobalMod: isGlobalMod,
isTargetAdmin: isTargetAdmin,
canEdit: isAdmin || (isGlobalMod && !isTargetAdmin),
canManageUsers: canManageUsers,
canEdit: isAdmin || ((isGlobalMod || canManageUsers) && !isTargetAdmin),
callerUid: callerUid,
uid: uid,
});
Expand Down

0 comments on commit 344ece8

Please sign in to comment.