ScrewTurn.Wiki.PermissionsManager.AddAclEntriesForDirectory C# (CSharp) Method

AddAclEntriesForDirectory() private method

Adds some ACL entries for a subject.
private AddAclEntriesForDirectory ( string subject, IFilesStorageProviderV30 provider, string directory, string grants, string denials ) : bool
subject string The subject.
provider IFilesStorageProviderV30 The provider.
directory string The directory.
grants string The granted actions.
denials string The denies actions.
return bool
        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;
        }