Monotone-Parent: 6ea44b1efa1edb28f1218a700087fee83cb79305
Monotone-Revision: 2b0145bf6bbc08cf0fb2fc9d65b3fd914daa72c2 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2011-12-01T21:13:09 Monotone-Branch: ca.inverse.sogomaint-2.0.2
parent
afe94a13c2
commit
0f35c72c24
11
ChangeLog
11
ChangeLog
|
@ -1,3 +1,14 @@
|
|||
2011-12-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||
|
||||
* OpenChange/MAPIStoreMessage.m (-subscriberCanReadMessage)
|
||||
(-subscriberCanModifyMessage): new getters for ACL operations at
|
||||
the message level.
|
||||
|
||||
* OpenChange/MAPIStoreFolder.m (-subscriberCanCreateMessages)
|
||||
(-subscriberCanModifyMessages, -subscriberCanReadMessages)
|
||||
(-subscriberCanDeleteMessages, -subscriberCanCreateSubFolders):
|
||||
new getters for ACL operations at the folder level.
|
||||
|
||||
2011-11-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||
|
||||
* SoObjects/SOGo/SOGoFolder.m
|
||||
|
|
|
@ -157,4 +157,37 @@
|
|||
return rights;
|
||||
}
|
||||
|
||||
- (BOOL) subscriberCanReadMessages
|
||||
{
|
||||
static NSArray *viewerRoles = nil;
|
||||
|
||||
if (!viewerRoles)
|
||||
viewerRoles = [[NSArray alloc] initWithObjects:
|
||||
SOGoCalendarRole_PublicViewer,
|
||||
SOGoCalendarRole_PublicDAndTViewer,
|
||||
SOGoCalendarRole_PrivateViewer,
|
||||
SOGoCalendarRole_PrivateDAndTViewer,
|
||||
SOGoCalendarRole_ConfidentialViewer,
|
||||
SOGoCalendarRole_ConfidentialDAndTViewer,
|
||||
nil];
|
||||
|
||||
return ([[self activeUserRoles] firstObjectCommonWithArray: viewerRoles]
|
||||
!= nil);
|
||||
}
|
||||
|
||||
- (BOOL) subscriberCanModifyMessages
|
||||
{
|
||||
static NSArray *modifierRoles = nil;
|
||||
|
||||
if (!modifierRoles)
|
||||
modifierRoles = [[NSArray alloc] initWithObjects:
|
||||
SOGoCalendarRole_PublicModifier,
|
||||
SOGoCalendarRole_PrivateModifier,
|
||||
SOGoCalendarRole_ConfidentialModifier,
|
||||
nil];
|
||||
|
||||
return ([[self activeUserRoles] firstObjectCommonWithArray: modifierRoles]
|
||||
!= nil);
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
@ -42,6 +42,7 @@
|
|||
#import <NGCards/iCalPerson.h>
|
||||
#import <NGCards/iCalTimeZone.h>
|
||||
#import <NGCards/iCalTrigger.h>
|
||||
#import <SOGo/SOGoPermissions.h>
|
||||
#import <SOGo/SOGoUser.h>
|
||||
#import <Appointments/SOGoAppointmentFolder.h>
|
||||
#import <Appointments/SOGoAppointmentObject.h>
|
||||
|
@ -620,6 +621,27 @@
|
|||
}
|
||||
}
|
||||
|
||||
- (BOOL) subscriberCanReadMessage
|
||||
{
|
||||
return ([[self activeUserRoles]
|
||||
containsObject: SOGoCalendarRole_ComponentViewer]
|
||||
|| [self subscriberCanModifyMessage]);
|
||||
}
|
||||
|
||||
- (BOOL) subscriberCanModifyMessage
|
||||
{
|
||||
BOOL rc;
|
||||
NSArray *roles = [self activeUserRoles];
|
||||
|
||||
if (isNew)
|
||||
rc = [roles containsObject: SOGoRole_ObjectCreator];
|
||||
else
|
||||
rc = ([roles containsObject: SOGoCalendarRole_ComponentModifier]
|
||||
|| [roles containsObject: SOGoCalendarRole_ComponentResponder]);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
- (void) save
|
||||
{
|
||||
iCalCalendar *vCalendar;
|
||||
|
|
|
@ -142,4 +142,14 @@
|
|||
return rights;
|
||||
}
|
||||
|
||||
- (BOOL) subscriberCanModifyMessages
|
||||
{
|
||||
return [[self activeUserRoles] containsObject: SOGoRole_ObjectEditor];
|
||||
}
|
||||
|
||||
- (BOOL) subscriberCanReadMessages
|
||||
{
|
||||
return [[self activeUserRoles] containsObject: SOGoRole_ObjectViewer];
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
#import <NGCards/NSString+NGCards.h>
|
||||
#import <Contacts/SOGoContactGCSEntry.h>
|
||||
#import <Mailer/NSString+Mail.h>
|
||||
#import <SOGo/SOGoPermissions.h>
|
||||
|
||||
#import "MAPIStoreContactsAttachment.h"
|
||||
#import "MAPIStoreContactsFolder.h"
|
||||
|
@ -847,6 +848,22 @@
|
|||
}
|
||||
}
|
||||
|
||||
- (BOOL) subscriberCanReadMessage
|
||||
{
|
||||
return [[self activeUserRoles] containsObject: SOGoRole_ObjectViewer];
|
||||
}
|
||||
|
||||
- (BOOL) subscriberCanModifyMessage
|
||||
{
|
||||
NSArray *roles;
|
||||
|
||||
roles = [self activeUserRoles];
|
||||
|
||||
return ((isNew
|
||||
&& [roles containsObject: SOGoRole_ObjectCreator])
|
||||
|| (!isNew && [roles containsObject: SOGoRole_ObjectEditor]));
|
||||
}
|
||||
|
||||
//
|
||||
//
|
||||
//
|
||||
|
|
|
@ -161,6 +161,12 @@
|
|||
- (NSArray *) rolesForExchangeRights: (uint32_t) rights;
|
||||
- (uint32_t) exchangeRightsForRoles: (NSArray *) roles;
|
||||
|
||||
- (BOOL) subscriberCanCreateMessages;
|
||||
- (BOOL) subscriberCanModifyMessages;
|
||||
- (BOOL) subscriberCanReadMessages;
|
||||
- (BOOL) subscriberCanDeleteMessages;
|
||||
- (BOOL) subscriberCanCreateSubFolders;
|
||||
|
||||
/* subclass helpers */
|
||||
- (void) postNotificationsForMoveCopyMessagesWithMIDs: (uint64_t *) srcMids
|
||||
andMessageURLs: (NSArray *) oldMessageURLs
|
||||
|
|
|
@ -1519,4 +1519,29 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe
|
|||
return nil;
|
||||
}
|
||||
|
||||
- (BOOL) subscriberCanCreateMessages
|
||||
{
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (BOOL) subscriberCanModifyMessages
|
||||
{
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (BOOL) subscriberCanReadMessages
|
||||
{
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (BOOL) subscriberCanDeleteMessages
|
||||
{
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (BOOL) subscriberCanCreateSubFolders
|
||||
{
|
||||
return NO;
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
|
||||
#import "MAPIStoreFolder.h"
|
||||
|
||||
@class NSArray;
|
||||
@class NSCalendarDate;
|
||||
@class NSData;
|
||||
@class NSMutableDictionary;
|
||||
|
@ -34,6 +35,7 @@
|
|||
@interface MAPIStoreGCSFolder : MAPIStoreFolder
|
||||
{
|
||||
SOGoMAPIFSMessage *versionsMessage;
|
||||
NSArray *activeUserRoles;
|
||||
}
|
||||
|
||||
/* synchronisation */
|
||||
|
@ -46,6 +48,8 @@
|
|||
- (void) setChangeKey: (NSData *) changeKey
|
||||
forMessageWithKey: (NSString *) messageKey;
|
||||
|
||||
- (NSArray *) activeUserRoles;
|
||||
|
||||
/* subclasses */
|
||||
- (EOQualifier *) componentQualifier;
|
||||
|
||||
|
|
|
@ -29,6 +29,8 @@
|
|||
#import <GDLContentStore/GCSFolder.h>
|
||||
#import <SOGo/NSArray+Utilities.h>
|
||||
#import <SOGo/SOGoGCSFolder.h>
|
||||
#import <SOGo/SOGoPermissions.h>
|
||||
#import <SOGo/SOGoUser.h>
|
||||
|
||||
#import "MAPIStoreContext.h"
|
||||
#import "MAPIStoreTypes.h"
|
||||
|
@ -53,6 +55,7 @@
|
|||
ASSIGN (versionsMessage,
|
||||
[SOGoMAPIFSMessage objectWithName: @"versions.plist"
|
||||
inContainer: propsFolder]);
|
||||
activeUserRoles = nil;
|
||||
}
|
||||
|
||||
return self;
|
||||
|
@ -66,6 +69,7 @@
|
|||
ASSIGN (versionsMessage,
|
||||
[SOGoMAPIFSMessage objectWithName: @"versions.plist"
|
||||
inContainer: propsFolder]);
|
||||
activeUserRoles = nil;
|
||||
}
|
||||
|
||||
return self;
|
||||
|
@ -74,6 +78,7 @@
|
|||
- (void) dealloc
|
||||
{
|
||||
[versionsMessage release];
|
||||
[activeUserRoles release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
|
@ -516,8 +521,38 @@
|
|||
return deletedKeys;
|
||||
}
|
||||
|
||||
- (NSArray *) activeUserRoles
|
||||
{
|
||||
SOGoUser *activeUser;
|
||||
|
||||
if (!activeUserRoles)
|
||||
{
|
||||
activeUser = [[self context] activeUser];
|
||||
activeUserRoles = [activeUser rolesForObject: sogoObject
|
||||
inContext: [context woContext]];
|
||||
[activeUserRoles retain];
|
||||
}
|
||||
|
||||
return activeUserRoles;
|
||||
}
|
||||
|
||||
- (BOOL) subscriberCanCreateMessages
|
||||
{
|
||||
return [[self activeUserRoles] containsObject: SOGoRole_ObjectCreator];
|
||||
}
|
||||
|
||||
- (BOOL) subscriberCanDeleteMessages
|
||||
{
|
||||
return [[self activeUserRoles] containsObject: SOGoRole_ObjectEraser];
|
||||
}
|
||||
|
||||
/* subclasses */
|
||||
|
||||
- (EOQualifier *) aclQualifier
|
||||
{
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (EOQualifier *) componentQualifier
|
||||
{
|
||||
[self subclassResponsibility: _cmd];
|
||||
|
|
|
@ -42,6 +42,7 @@
|
|||
NSArray *attachmentKeys;
|
||||
NSMutableDictionary *attachmentParts;
|
||||
NSMutableArray *activeTables;
|
||||
NSArray *activeUserRoles;
|
||||
}
|
||||
|
||||
- (void) getMessageData: (struct mapistore_message **) dataPtr
|
||||
|
@ -70,6 +71,8 @@
|
|||
inMemCtx: (TALLOC_CTX *) memCtx;
|
||||
- (NSArray *) activeContainerMessageTables;
|
||||
|
||||
- (NSArray *) activeUserRoles;
|
||||
|
||||
/* subclasses */
|
||||
- (void) save;
|
||||
|
||||
|
@ -77,6 +80,9 @@
|
|||
- (MAPIStoreAttachment *) createAttachment;
|
||||
- (MAPIStoreAttachmentTable *) attachmentTable;
|
||||
|
||||
- (BOOL) subscriberCanReadMessage;
|
||||
- (BOOL) subscriberCanModifyMessage;
|
||||
|
||||
@end
|
||||
|
||||
#endif /* MAPISTOREMESSAGE_H */
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#import <Foundation/NSURL.h>
|
||||
#import <NGExtensions/NSObject+Logs.h>
|
||||
#import <SOGo/SOGoObject.h>
|
||||
#import <SOGo/SOGoPermissions.h>
|
||||
#import <SOGo/SOGoUser.h>
|
||||
|
||||
#import "MAPIStoreActiveTables.h"
|
||||
|
@ -137,6 +138,7 @@ rtf2html (NSData *compressedRTF)
|
|||
{
|
||||
attachmentParts = [NSMutableDictionary new];
|
||||
activeTables = [NSMutableArray new];
|
||||
activeUserRoles = nil;
|
||||
}
|
||||
|
||||
return self;
|
||||
|
@ -144,6 +146,7 @@ rtf2html (NSData *compressedRTF)
|
|||
|
||||
- (void) dealloc
|
||||
{
|
||||
[activeUserRoles release];
|
||||
[attachmentKeys release];
|
||||
[attachmentParts release];
|
||||
[activeTables release];
|
||||
|
@ -799,4 +802,31 @@ rtf2html (NSData *compressedRTF)
|
|||
[activeTables removeObject: activeTable];
|
||||
}
|
||||
|
||||
- (NSArray *) activeUserRoles
|
||||
{
|
||||
MAPIStoreContext *context;
|
||||
|
||||
if (!activeUserRoles)
|
||||
{
|
||||
context = [self context];
|
||||
|
||||
activeUserRoles = [[context activeUser]
|
||||
rolesForObject: sogoObject
|
||||
inContext: [context woContext]];
|
||||
[activeUserRoles retain];
|
||||
}
|
||||
|
||||
return activeUserRoles;
|
||||
}
|
||||
|
||||
- (BOOL) subscriberCanReadMessage
|
||||
{
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (BOOL) subscriberCanModifyMessage
|
||||
{
|
||||
return NO;
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
#import <NGCards/iCalTimeZone.h>
|
||||
#import <NGCards/iCalToDo.h>
|
||||
#import <NGCards/iCalPerson.h>
|
||||
#import <SOGo/SOGoPermissions.h>
|
||||
#import <SOGo/SOGoUser.h>
|
||||
#import <SOGo/SOGoUserDefaults.h>
|
||||
#import <Appointments/SOGoTaskObject.h>
|
||||
|
@ -296,6 +297,27 @@
|
|||
return [self getLongZero: data inMemCtx: memCtx];
|
||||
}
|
||||
|
||||
- (BOOL) subscriberCanReadMessage
|
||||
{
|
||||
return ([[self activeUserRoles]
|
||||
containsObject: SOGoCalendarRole_ComponentViewer]
|
||||
|| [self subscriberCanModifyMessage]);
|
||||
}
|
||||
|
||||
- (BOOL) subscriberCanModifyMessage
|
||||
{
|
||||
BOOL rc;
|
||||
NSArray *roles = [self activeUserRoles];
|
||||
|
||||
if (isNew)
|
||||
rc = [roles containsObject: SOGoRole_ObjectCreator];
|
||||
else
|
||||
rc = ([roles containsObject: SOGoCalendarRole_ComponentModifier]
|
||||
|| [roles containsObject: SOGoCalendarRole_ComponentResponder]);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
- (void) save
|
||||
{
|
||||
iCalCalendar *vCalendar;
|
||||
|
|
Loading…
Reference in New Issue