private bool AddAclEntriesForDirectory(string subject, IFilesStorageProviderV30 provider, string directory, string[] grants, string[] denials)
{
bool isGroup = subject.StartsWith("G.");
subject = subject.Substring(2);
UserGroup group = null;
UserInfo user = null;
if(isGroup) group = Users.FindUserGroup(subject);
else user = Users.FindUser(subject);
foreach(string action in grants) {
bool done = false;
if(isGroup) {
done = AuthWriter.SetPermissionForDirectory(AuthStatus.Grant,
provider, directory, action, group);
}
else {
done = AuthWriter.SetPermissionForDirectory(AuthStatus.Grant,
provider, directory, action, user);
}
if(!done) return false;
}
foreach(string action in denials) {
bool done = false;
if(isGroup) {
done = AuthWriter.SetPermissionForDirectory(AuthStatus.Deny,
provider, directory, action, group);
}
else {
done = AuthWriter.SetPermissionForDirectory(AuthStatus.Deny,
provider, directory, action, user);
}
if(!done) return false;
}
return true;
}