Skip to content

Commit 35f4dda

Browse files
committed
message: Fix permissions for admins on pre-291 servers
Fixes #1850.
1 parent a55ee82 commit 35f4dda

File tree

2 files changed

+29
-9
lines changed

2 files changed

+29
-9
lines changed

lib/model/message.dart

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -107,11 +107,12 @@ mixin MessageStore on ChannelStore {
107107
return false;
108108
}
109109

110-
// TODO(#1850) really the default should be `role:administrators`:
111-
// https://github.com/zulip/zulip-flutter/pull/1842#discussion_r2331362461
112-
if (realmCanDeleteAnyMessageGroup != null
113-
&& selfHasPermissionForGroupSetting(realmCanDeleteAnyMessageGroup!,
114-
GroupSettingType.realm, 'can_delete_any_message_group')) {
110+
if (realmCanDeleteAnyMessageGroup != null) {
111+
if (selfHasPermissionForGroupSetting(realmCanDeleteAnyMessageGroup!,
112+
GroupSettingType.realm, 'can_delete_any_message_group')) {
113+
return true;
114+
}
115+
} else if (selfUser.role.isAtLeast(UserRole.administrator)) {
115116
return true;
116117
}
117118

test/model/message_test.dart

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1188,11 +1188,11 @@ void main() {
11881188
});
11891189

11901190
group('pre-281', () {
1191-
// The realm-level can-delete-any-message permission
1192-
// doesn't exist, so we act as though that's present and denied,
1193-
// notably by not throwing.
1191+
// The realm-level can-delete-any-message permission doesn't exist,
1192+
// so we act as though that's present with role:administrators,
1193+
// and we don't throw.
11941194

1195-
test('denied', () async {
1195+
test('self-user is not admin', () async {
11961196
check(await evaluate(
11971197
CanDeleteMessageParams.pre281(
11981198
senderConfig: CanDeleteMessageSenderConfig.otherHuman,
@@ -1210,6 +1210,25 @@ void main() {
12101210
selfUserRole: UserRole.member)))
12111211
..isFalse();
12121212
});
1213+
1214+
test('self-user is admin', () async {
1215+
check(await evaluate(
1216+
CanDeleteMessageParams.pre281(
1217+
senderConfig: CanDeleteMessageSenderConfig.otherHuman,
1218+
timeLimitConfig: CanDeleteMessageTimeLimitConfig.notLimited,
1219+
isChannelArchived: false,
1220+
realmDeleteOwnMessagePolicy: RealmDeleteOwnMessagePolicy.everyone,
1221+
selfUserRole: UserRole.administrator,
1222+
)))..equals(await evaluate(
1223+
CanDeleteMessageParams.pre291(
1224+
senderConfig: CanDeleteMessageSenderConfig.otherHuman,
1225+
timeLimitConfig: CanDeleteMessageTimeLimitConfig.notLimited,
1226+
inRealmCanDeleteAnyMessageGroup: true,
1227+
isChannelArchived: false,
1228+
realmDeleteOwnMessagePolicy: RealmDeleteOwnMessagePolicy.everyone,
1229+
selfUserRole: UserRole.administrator)))
1230+
..isTrue();
1231+
});
12131232
});
12141233
});
12151234
});

0 commit comments

Comments
 (0)