From b88f44fff3160eec904c8952b3c970c28c27a858 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 2 May 2008 23:11:21 +0000 Subject: [PATCH] Monotone-Parent: d61516dbee88e6bc6828689bf6efabde759a5a80 Monotone-Revision: cb2b5ac6d1deb889762cf2eadc58376d6ab9f534 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2008-05-02T23:11:21 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 6 +++ SoObjects/SOGo/SOGoGCSFolder.m | 64 ++++++++++++++++++++++++++++--- SoObjects/SOGo/SOGoParentFolder.m | 44 +++++++++++++++++++++ 3 files changed, 109 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1d307b16f..f1953e8e9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2008-05-02 Wolfgang Sourdeau + * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder + +webdavAclManager]): new overriden method. + + * SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder + +webdavAclManager]): new overriden method. + * UI/MailPartViewers/UIxMailPartTextViewer.m (convertChars): do not cast pointers to unsigned int to avoid problems with big endian archs. diff --git a/SoObjects/SOGo/SOGoGCSFolder.m b/SoObjects/SOGo/SOGoGCSFolder.m index e3d7c56ce..6c4e99050 100644 --- a/SoObjects/SOGo/SOGoGCSFolder.m +++ b/SoObjects/SOGo/SOGoGCSFolder.m @@ -21,9 +21,6 @@ * Boston, MA 02111-1307, USA. */ -#import -#import "SOGoDAVRendererTypes.h" - #import #import #import @@ -54,12 +51,14 @@ #import "NSDictionary+Utilities.h" #import "NSArray+Utilities.h" +#import "NSObject+DAV.h" #import "NSString+Utilities.h" #import "SOGoContentObject.h" #import "SOGoParentFolder.h" #import "SOGoPermissions.h" #import "SOGoUser.h" +#import "SOGoWebDAVAclManager.h" #import "WORequest+SOGo.h" #import "SOGoGCSFolder.h" @@ -69,6 +68,62 @@ static BOOL sendFolderAdvisories = NO; @implementation SOGoGCSFolder ++ (SOGoWebDAVAclManager *) webdavAclManager +{ + SOGoWebDAVAclManager *webdavAclManager = nil; + + if (!webdavAclManager) + { + webdavAclManager = [SOGoWebDAVAclManager new]; + [webdavAclManager registerDAVPermission: davElement (@"read", @"DAV:") + abstract: YES + withEquivalent: SoPerm_WebDAVAccess + asChildOf: davElement (@"all", @"DAV:")]; + [webdavAclManager registerDAVPermission: davElement (@"read-current-user-privilege-set", @"DAV:") + abstract: YES + withEquivalent: SoPerm_WebDAVAccess + asChildOf: davElement (@"read", @"DAV:")]; + [webdavAclManager registerDAVPermission: davElement (@"write", @"DAV:") + abstract: YES + withEquivalent: nil + asChildOf: davElement (@"all", @"DAV:")]; + [webdavAclManager registerDAVPermission: davElement (@"bind", @"DAV:") + abstract: NO + withEquivalent: SoPerm_AddDocumentsImagesAndFiles + asChildOf: davElement (@"write", @"DAV:")]; + [webdavAclManager registerDAVPermission: davElement (@"unbind", @"DAV:") + abstract: NO + withEquivalent: SoPerm_DeleteObjects + asChildOf: davElement (@"write", @"DAV:")]; + [webdavAclManager + registerDAVPermission: davElement (@"write-properties", @"DAV:") + abstract: YES + withEquivalent: SoPerm_ChangePermissions /* hackish */ + asChildOf: davElement (@"write", @"DAV:")]; + [webdavAclManager + registerDAVPermission: davElement (@"write-content", @"DAV:") + abstract: YES + withEquivalent: nil + asChildOf: davElement (@"write", @"DAV:")]; + [webdavAclManager registerDAVPermission: davElement (@"admin", @"urn:inverse:params:xml:ns:inverse-dav") + abstract: YES + withEquivalent: nil + asChildOf: davElement (@"all", @"DAV:")]; + [webdavAclManager + registerDAVPermission: davElement (@"read-acl", @"DAV:") + abstract: YES + withEquivalent: SOGoPerm_ReadAcls + asChildOf: davElement (@"admin", @"urn:inverse:params:xml:ns:inverse-dav")]; + [webdavAclManager + registerDAVPermission: davElement (@"write-acl", @"DAV:") + abstract: YES + withEquivalent: SoPerm_ChangePermissions + asChildOf: davElement (@"admin", @"urn:inverse:params:xml:ns:inverse-dav")]; + } + + return webdavAclManager; +} + + (void) initialize { NSUserDefaults *ud; @@ -273,8 +328,7 @@ static BOOL sendFolderAdvisories = NO; } else error = [NSException exceptionWithHTTPStatus: 400 - reason: [NSString stringWithFormat: - @"Empty string"]]; + reason: @"Empty string"]; } else error = [NSException exceptionWithHTTPStatus: 403 diff --git a/SoObjects/SOGo/SOGoParentFolder.m b/SoObjects/SOGo/SOGoParentFolder.m index c7291168a..af6929f63 100644 --- a/SoObjects/SOGo/SOGoParentFolder.m +++ b/SoObjects/SOGo/SOGoParentFolder.m @@ -32,9 +32,11 @@ #import #import +#import "NSObject+DAV.h" #import "SOGoGCSFolder.h" #import "SOGoPermissions.h" #import "SOGoUser.h" +#import "SOGoWebDAVAclManager.h" #import "SOGoParentFolder.h" @@ -48,6 +50,48 @@ static SoSecurityManager *sm = nil; sm = [SoSecurityManager sharedSecurityManager]; } ++ (SOGoWebDAVAclManager *) webdavAclManager +{ + SOGoWebDAVAclManager *webdavAclManager = nil; + + if (!webdavAclManager) + { + webdavAclManager = [SOGoWebDAVAclManager new]; + [webdavAclManager registerDAVPermission: davElement (@"read", @"DAV:") + abstract: YES + withEquivalent: nil + asChildOf: davElement (@"all", @"DAV:")]; + [webdavAclManager registerDAVPermission: davElement (@"read-current-user-privilege-set", @"DAV:") + abstract: NO + withEquivalent: SoPerm_WebDAVAccess + asChildOf: davElement (@"read", @"DAV:")]; + [webdavAclManager registerDAVPermission: davElement (@"write", @"DAV:") + abstract: YES + withEquivalent: nil + asChildOf: davElement (@"all", @"DAV:")]; + [webdavAclManager registerDAVPermission: davElement (@"bind", @"DAV:") + abstract: NO + withEquivalent: SoPerm_AddFolders + asChildOf: davElement (@"write", @"DAV:")]; + [webdavAclManager registerDAVPermission: davElement (@"unbind", @"DAV:") + abstract: NO + withEquivalent: SoPerm_DeleteObjects + asChildOf: davElement (@"write", @"DAV:")]; + [webdavAclManager + registerDAVPermission: davElement (@"write-properties", @"DAV:") + abstract: YES + withEquivalent: nil + asChildOf: davElement (@"write", @"DAV:")]; + [webdavAclManager + registerDAVPermission: davElement (@"write-content", @"DAV:") + abstract: YES + withEquivalent: nil + asChildOf: davElement (@"write", @"DAV:")]; + } + + return webdavAclManager; +} + - (id) init { if ((self = [super init]))