Creation of aclUsers window

This commit is contained in:
Alexandre Cloutier
2014-09-30 15:17:44 -04:00
parent 22970bd510
commit ee5ef02f50
4 changed files with 254 additions and 31 deletions
+72 -31
View File
@@ -119,29 +119,62 @@
if ([newUID length] > 0)
{
if (!defaultUserID)
ASSIGN (defaultUserID, [[self clientObject] defaultUserID]);
ASSIGN (defaultUserID, [[self clientObject] defaultUserID]);
um = [SOGoUserManager sharedUserManager];
if ([newUID isEqualToString: defaultUserID]
|| [newUID isEqualToString: @"anonymous"]
|| [[um getEmailForUID: newUID] length] > 0)
{
if (![newUID hasPrefix: @"@"])
{
if ([newUID isEqualToString: defaultUserID] || [newUID isEqualToString: @"anonymous"]
|| [[um getEmailForUID: newUID] length] > 0)
{
if (![newUID hasPrefix: @"@"])
{
domain = [[context activeUser] domain];
group = [SOGoGroup groupWithIdentifier: newUID inDomain: domain];
if (group)
newUID = [NSString stringWithFormat: @"@%@", newUID];
}
group = [SOGoGroup groupWithIdentifier: newUID inDomain: domain];
if (group)
newUID = [NSString stringWithFormat: @"@%@", newUID];
}
ASSIGN (uid, newUID);
clientObject = [self clientObject];
[userRights addObjectsFromArray: [clientObject aclsForUser: uid]];
ASSIGN (uid, newUID);
clientObject = [self clientObject];
[userRights addObjectsFromArray: [clientObject aclsForUser: uid]];
response = YES;
}
response = YES;
}
}
return response;
}
- (BOOL) _initRightsWithParameter:(NSString *) newUID
{
BOOL response;
NSString *domain;
SOGoUserManager *um;
SOGoObject *clientObject;
SOGoGroup *group;
response = NO;
if ([newUID length] > 0)
{
if (!defaultUserID)
ASSIGN (defaultUserID, [[self clientObject] defaultUserID]);
um = [SOGoUserManager sharedUserManager];
if ([newUID isEqualToString: defaultUserID] || [newUID isEqualToString: @"anonymous"]
|| [[um getEmailForUID: newUID] length] > 0)
{
if (![newUID hasPrefix: @"@"])
{
domain = [[context activeUser] domain];
group = [SOGoGroup groupWithIdentifier: newUID inDomain: domain];
if (group)
newUID = [NSString stringWithFormat: @"@%@", newUID];
}
ASSIGN (uid, newUID);
clientObject = [self clientObject];
[userRights addObjectsFromArray: [clientObject aclsForUser: uid]];
response = YES;
}
}
return response;
}
@@ -186,20 +219,32 @@
- (id <WOActionResults>) saveUserRightsAction
{
id <WOActionResults> response;
WORequest *value;
SOGoDomainDefaults *dd;
NSDictionary *jsonObject, *currentObject;
NSEnumerator *enumerator;
NSArray *o;
id key;
if (![self _initRights])
response = [NSException exceptionWithHTTPStatus: 403
reason: @"No such user."];
else
value = [[self context] request];
jsonObject = [[value contentAsString] objectFromJSONString];
enumerator = [jsonObject keyEnumerator];
while((key = [enumerator nextObject]))
{
currentObject = [jsonObject objectForKey: key];
if(![self _initRightsWithParameter: [currentObject objectForKey: @"UID"]])
{
NSArray *o;
o = [NSArray arrayWithArray: userRights];
[self updateRights];
response = [self responseWithStatus: 403
andString: @"No such user."];
return response;
}
else
{
[self updateRights:[currentObject objectForKey: @"aclOptions"]];
[[self clientObject] setRoles: userRights forUser: uid];
o = [NSArray arrayWithArray: userRights];
dd = [[context activeUser] domainDefaults];
if (![o isEqualToArray: userRights] && [dd aclSendEMailNotifications])
[self sendACLAdvisoryTemplateForObject: [self clientObject]];
@@ -234,10 +279,6 @@
[userRights removeObjectsInArray: list];
}
- (void) prepareRightsForm
{
}
- (void) updateRights
{
[self subclassResponsibility: _cmd];