mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-04-04 21:08:51 +00:00
fix(mail): split "l" and "r" ACL attributes for IMAP mailboxes
Fixes #4983
This commit is contained in:
@@ -1326,6 +1326,8 @@ static NSComparisonResult _compareFetchResultsByUID (id entry1, id entry2, NSArr
|
||||
switch ([imapAcls characterAtIndex: count])
|
||||
{
|
||||
case 'l':
|
||||
[SOGoAcls addObjectUniquely: SOGoRole_FolderViewer];
|
||||
break;
|
||||
case 'r':
|
||||
[SOGoAcls addObjectUniquely: SOGoRole_ObjectViewer];
|
||||
break;
|
||||
@@ -1408,11 +1410,10 @@ static NSComparisonResult _compareFetchResultsByUID (id entry1, id entry2, NSArr
|
||||
acls = [sogoAcls objectEnumerator];
|
||||
while ((currentAcl = [acls nextObject]))
|
||||
{
|
||||
if ([currentAcl isEqualToString: SOGoRole_ObjectViewer])
|
||||
{
|
||||
[imapAcls appendFormat: @"lr"];
|
||||
character = 0;
|
||||
}
|
||||
if ([currentAcl isEqualToString: SOGoRole_FolderViewer])
|
||||
character = 'l';
|
||||
else if ([currentAcl isEqualToString: SOGoRole_ObjectViewer])
|
||||
character = 'r';
|
||||
else if ([currentAcl isEqualToString: SOGoMailRole_SeenKeeper])
|
||||
character = 's';
|
||||
else if ([currentAcl isEqualToString: SOGoMailRole_Writer])
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
/* SOGoPermissions.h - this file is part of SOGo
|
||||
*
|
||||
* Copyright (C) 2006 Inverse inc.
|
||||
*
|
||||
* Author: Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||
* Copyright (C) 2006-2021 Inverse inc.
|
||||
*
|
||||
* This file is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SOGoPermissions.m - this file is part of SOGo
|
||||
*
|
||||
* Copyright (C) 2006-2014 Inverse inc.
|
||||
* Copyright (C) 2006-2021 Inverse inc.
|
||||
*
|
||||
* This file is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -28,6 +28,7 @@ NSString *SOGoRole_ObjectEditor = @"ObjectEditor";
|
||||
|
||||
NSString *SOGoRole_FolderCreator = @"FolderCreator";
|
||||
NSString *SOGoRole_FolderEraser = @"FolderEraser";
|
||||
NSString *SOGoRole_FolderViewer = @"FolderViewer";
|
||||
|
||||
NSString *SOGoRole_AuthorizedSubscriber = @"AuthorizedSubscriber";
|
||||
NSString *SOGoRole_PublicUser = @"PublicUser";
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
"Access rights to" = "Access rights to";
|
||||
"For user" = "For user";
|
||||
"Any Authenticated User" = "Any Authenticated User";
|
||||
"List and see this folder" = "List and see this folder";
|
||||
"View this folder" = "View this folder";
|
||||
"Read mails from this folder" = "Read mails from this folder";
|
||||
"Mark mails read and unread" = "Mark mails read and unread";
|
||||
"Modify the flags of the mails in this folder" = "Modify the flags of the mails in this folder";
|
||||
|
||||
@@ -36,6 +36,11 @@
|
||||
return ([account imapAclStyle] == rfc4314);
|
||||
}
|
||||
|
||||
- (BOOL) userCanViewFolder
|
||||
{
|
||||
return [userRights containsObject: SOGoRole_FolderViewer];
|
||||
}
|
||||
|
||||
- (void) setUserCanReadMails: (BOOL) userCanReadMails
|
||||
{
|
||||
if (userCanReadMails)
|
||||
@@ -169,6 +174,7 @@
|
||||
- (NSDictionary *) userRightsForObject
|
||||
{
|
||||
return [NSDictionary dictionaryWithObjectsAndKeys:
|
||||
[NSNumber numberWithBool:[self userCanViewFolder]], @"userCanViewFolder",
|
||||
[NSNumber numberWithBool:[self userCanReadMails]], @"userCanReadMails",
|
||||
[NSNumber numberWithBool:[self userCanMarkMailsRead]], @"userCanMarkMailsRead",
|
||||
[NSNumber numberWithBool:[self userCanWriteMails]], @"userCanWriteMails",
|
||||
@@ -184,6 +190,11 @@
|
||||
|
||||
- (void) updateRights: (NSDictionary *) newRights
|
||||
{
|
||||
if ([[newRights objectForKey: @"userCanViewFolder"] boolValue])
|
||||
[self appendRight: SOGoRole_FolderViewer];
|
||||
else
|
||||
[self removeRight: SOGoRole_FolderViewer];
|
||||
|
||||
if ([[newRights objectForKey: @"userCanReadMails"] boolValue])
|
||||
[self appendRight: SOGoRole_ObjectViewer];
|
||||
else
|
||||
|
||||
@@ -9,6 +9,14 @@
|
||||
|
||||
<div class="mailUserRights" layout="column">
|
||||
|
||||
<md-checkbox name="userCanViewFolder"
|
||||
ng-model="acl.selectedUser.rights.userCanViewFolder"
|
||||
ng-change="acl.confirmChange(acl.selectedUser)"
|
||||
ng-true-value="1"
|
||||
ng-false-value="0">
|
||||
<var:string label:value="View this folder" />
|
||||
</md-checkbox>
|
||||
|
||||
<md-checkbox name="userCanReadMails"
|
||||
ng-model="acl.selectedUser.rights.userCanReadMails"
|
||||
ng-change="acl.confirmChange(acl.selectedUser)"
|
||||
|
||||
Reference in New Issue
Block a user