SenseNet.ContentRepository.Storage.Security.PermissionEvaluator.GetPermittedLevel C# (CSharp) Method

GetPermittedLevel() private method

private GetPermittedLevel ( string path, IUser user, bool isCreator, bool isLastModifier ) : PermittedLevel
path string
user IUser
isCreator bool
isLastModifier bool
return PermittedLevel
        internal PermittedLevel GetPermittedLevel(string path, IUser user, bool isCreator, bool isLastModifier)
        {
            if (user.Id == -1)
                return PermittedLevel.All;
            //==>
            var principals = GetPrincipals(user, isCreator, isLastModifier);

            var allow = 0;
            var deny = 0;

            var firstPermInfo = GetFirstInfo(path);
            if (firstPermInfo == null)
                throw new ApplicationException(String.Format("PermissionInfo was not found. Path: {0}, User: {1}, isCreator: {2}, isLastModifier: {3}", path, user.Username, isCreator, isLastModifier));

            if (firstPermInfo.Path == path)
                firstPermInfo.AggregateLevelOnlyValues(principals, ref allow, ref deny);
            for (var permInfo = firstPermInfo; permInfo != null; permInfo = permInfo.Inherits ? permInfo.Parent : null)
                permInfo.AggregateEffectiveValues(principals, ref allow, ref deny);
            //==<

            var x = allow & ~deny;
            PermittedLevel level;
            if ((x & 0x4) != 0)
                level = PermittedLevel.All;
            else if ((x & 0x2) != 0)
                level = PermittedLevel.PublicOnly;
            else if ((x & 0x1) != 0)
                level = PermittedLevel.HeadOnly;
            else
                level = PermittedLevel.None;
            return level;

            ////HACK: harcoded implementation
            //if (userId == 1)
            //    return PermittedLevel.All;
            //if (path.StartsWith("/Root/System/ContentExplorer/explorer.aspx"))
            //    return PermittedLevel.None;
            //return PermittedLevel.PublicOnly;
        }
        internal SecurityEntry[] GetAllEntries(string path)