fix: Member of Group Cannot Be Added as New Member

This commit is contained in:
Moriz Wahl 2022-11-07 16:57:16 +01:00
parent 4cd8c58f53
commit a1fcc40432

View File

@ -143,16 +143,20 @@ const isAllowedToChangeGroupMemberRole = rule({
}) })
try { try {
const { admin, group, member } = await readTxPromise const { admin, group, member } = await readTxPromise
const groupExists = !!group
const adminExists = !!admin
const userIsMember = !!member
const sameUserRoleInGroup = member && member.myRoleInGroup === roleInGroup
const userIsOwner = member && ['owner'].includes(member.myRoleInGroup)
const adminIsAdmin = admin && ['admin'].includes(admin.myRoleInGroup)
const adminCanSetRole = ['pending', 'usual', 'admin'].includes(roleInGroup)
const adminIsOwner = admin && ['owner'].includes(admin.myRoleInGroup)
const ownerCanSetRole = ['pending', 'usual', 'admin', 'owner'].includes(roleInGroup)
return ( return (
!!group && groupExists &&
!!admin && adminExists &&
(!member || (!userIsMember || (userIsMember && (sameUserRoleInGroup || !userIsOwner))) &&
(!!member && ((adminIsAdmin && adminCanSetRole) || (adminIsOwner && ownerCanSetRole))
(member.myRoleInGroup === roleInGroup || !['owner'].includes(member.myRoleInGroup)))) &&
((['admin'].includes(admin.myRoleInGroup) &&
['pending', 'usual', 'admin'].includes(roleInGroup)) ||
(['owner'].includes(admin.myRoleInGroup) &&
['pending', 'usual', 'admin', 'owner'].includes(roleInGroup)))
) )
} catch (error) { } catch (error) {
throw new Error(error) throw new Error(error)