Monotone-Parent: 6a7c72685c7b5bfafc6f0bf0d1ade1f9f302961a

Monotone-Revision: 65fe3a97b90cbf5428d1a613f449d9f3c48527a8

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2008-02-20T17:35:11
Monotone-Branch: ca.inverse.sogo
maint-2.0.2
Wolfgang Sourdeau 2008-02-20 17:35:11 +00:00
parent 7db2a97ec3
commit 41c94c2d5f
3 changed files with 66 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2008-02-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder -davInverseACL]):
first implementation of a DAV interface to SOGo roles. Returns the
result in JSON.
2008-02-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* GNUmakefile: migrated to GNUstep Make 2.

View File

@ -257,7 +257,7 @@
{
return [NSArray arrayWithObjects: SoRole_Owner, SOGoRole_ObjectViewer,
SOGoRole_ObjectEditor, SOGoRole_ObjectCreator,
SOGoRole_ObjectEraser, nil];
SOGoRole_ObjectEraser, nil];
}
- (NSArray *) aclsForUser: (NSString *) uid

View File

@ -682,6 +682,65 @@ static BOOL sendFolderAdvisories = NO;
return defaultUserID;
}
- (void) _appendACLUserData: (NSString *) user
toString: (NSMutableString *) aclAnswer
{
SOGoUser *aclUser;
[aclAnswer appendFormat: @"<id>%@</id>", user];
aclUser = [SOGoUser userWithLogin: user roles: nil];
[aclAnswer appendFormat: @"<displayName>%@</displayName>",
[aclUser cn]];
}
- (void) _appendACL: (NSArray *) userAcl
toString: (NSMutableString *) aclAnswer
{
NSEnumerator *aclForUser;
NSString *currentAcl;
[aclAnswer appendString: @"<acl>"];
aclForUser = [userAcl objectEnumerator];
while ((currentAcl = [aclForUser nextObject]))
[aclAnswer appendFormat: @"<%@/>", currentAcl];
[aclAnswer appendString: @"</acl>"];
}
- (NSString *) davInverseACL
{
NSMutableArray *aclAnswer;
NSEnumerator *aclUsers;
NSMutableDictionary *data;
NSString *currentUser, *cn;
SOGoUser *sogoUser;
aclAnswer = [NSMutableArray array];
currentUser = [self defaultUserID];
data = [NSMutableDictionary new];
[data setObject: [self aclsForUser: currentUser]
forKey: @"acl"];
[aclAnswer addObject: [NSDictionary dictionaryWithObject: data forKey: @"defaultUser"]];
[data release];
aclUsers = [[self aclUsers] objectEnumerator];
while ((currentUser = [aclUsers nextObject]))
{
data = [NSMutableDictionary new];
[data setObject: currentUser forKey: @"id"];
sogoUser = [SOGoUser userWithLogin: currentUser roles: nil];
cn = [sogoUser cn];
if (!cn)
cn = currentUser;
[data setObject: cn forKey: @"displayName"];
[data setObject: [self aclsForUser: currentUser] forKey: @"acl"];
[aclAnswer addObject: [NSDictionary dictionaryWithObject: data forKey: @"user"]];
[data release];
}
return [aclAnswer jsonRepresentation];
}
/* description */
- (void) appendAttributesToDescription: (NSMutableString *) _ms