core: prohibit to change or assign relay role (#7284)

This commit is contained in:
spaced4ndy authored and GitHub committed 2026-07-22 19:39:05 +00:00
1 parent 49a8664331
commit 8ec4b424cb
3 files changed
+17 -15

No files matched your search

+2 -4
View File
@@ -1288,13 +1288,11 @@ isRosterRole r = r == GRMember || r == GRModerator || r == GRAdmin
isPrivilegedRole :: GroupMemberRole -> Bool
isPrivilegedRole r = r >= GRMember
-- Minimum role allowed to change a member's role from `from` to `to` (moderators only within observer..member).
-- Minimum role allowed to change a member's role from `from` to `to` (moderators only up to member; relay checked separately).
roleRequiredToChange :: GroupMemberRole -> GroupMemberRole -> GroupMemberRole
roleRequiredToChange from to
| moderatable from && moderatable to = GRModerator
| from <= GRMember && to <= GRMember = GRModerator
| otherwise = maximum ([GRAdmin, from, to] :: [GroupMemberRole])
where
moderatable r = GRObserver <= r && r <= GRMember
-- Drop non-privileged-role entries and de-duplicate by memberId, keeping the first.
-- Runs on the parsed roster blob.