示例#1
0
        /// <summary>
        /// Adds the parent rules.
        /// </summary>
        /// <param name="authService">The authentication service.</param>
        /// <param name="itemRules">The item rules.</param>
        /// <param name="parentRules">The parent rules.</param>
        /// <param name="parent">The parent.</param>
        /// <param name="action">The action.</param>
        private void AddParentRules(AuthService authService, List <AuthRule> itemRules, List <MyAuthRule> parentRules, ISecured parent, string action)
        {
            if (parent != null)
            {
                var entityType = Rock.Web.Cache.EntityTypeCache.Read(parent.TypeId);
                foreach (var auth in authService.GetAuths(parent.TypeId, parent.Id, action))
                {
                    var rule = new AuthRule(auth);

                    if (!itemRules.Exists(r =>
                                          r.SpecialRole == rule.SpecialRole &&
                                          r.PersonId == rule.PersonId &&
                                          r.GroupId == rule.GroupId) &&
                        !parentRules.Exists(r =>
                                            r.SpecialRole == rule.SpecialRole &&
                                            r.PersonId == rule.PersonId &&
                                            r.GroupId == rule.GroupId))
                    {
                        var myRule = new MyAuthRule(rule);
                        myRule.EntityTitle = string.Format("{0} <small>({1})</small>", parent.ToString(), entityType.FriendlyName ?? entityType.Name).TrimStart();
                        parentRules.Add(myRule);
                    }
                }

                AddParentRules(authService, itemRules, parentRules, parent.ParentAuthority, action);
            }
        }
示例#2
0
        private void AddParentRules(List <MyAuthRule> rules, ISecured parent, string action)
        {
            if (parent != null)
            {
                var entityType = Rock.Web.Cache.EntityTypeCache.Read(parent.TypeId);
                foreach (AuthRule rule in Authorization.AuthRules(parent.TypeId, parent.Id, action))
                {
                    if (!rules.Exists(r =>
                                      r.SpecialRole == rule.SpecialRole &&
                                      r.PersonId == rule.PersonId &&
                                      r.GroupId == rule.GroupId))
                    {
                        var myRule = new MyAuthRule(rule);
                        myRule.EntityTitle = string.Format("{0} ({1})", parent.ToString(), entityType.FriendlyName ?? entityType.Name).TrimStart();
                        rules.Add(myRule);
                    }
                }

                AddParentRules(rules, parent.ParentAuthority, action);
            }
        }
示例#3
0
        private void AddParentRules( List<MyAuthRule> rules, ISecured parent, string action )
        {
            if ( parent != null )
            {
                var entityType = Rock.Web.Cache.EntityTypeCache.Read( parent.TypeId );
                foreach ( AuthRule rule in Authorization.AuthRules( parent.TypeId, parent.Id, action ) )
                    if ( !rules.Exists( r =>
                        r.SpecialRole == rule.SpecialRole &&
                        r.PersonId == rule.PersonId &&
                        r.GroupId == rule.GroupId ) )
                    {
                        var myRule = new MyAuthRule( rule );
                        myRule.EntityTitle = string.Format( "{0} ({1})", parent.ToString(), entityType.FriendlyName ?? entityType.Name ).TrimStart();
                        rules.Add( myRule );
                    }

                AddParentRules( rules, parent.ParentAuthority, action );
            }
        }
示例#4
0
        /// <summary>
        /// Adds the parent rules.
        /// </summary>
        /// <param name="authService">The authentication service.</param>
        /// <param name="itemRules">The item rules.</param>
        /// <param name="parentRules">The parent rules.</param>
        /// <param name="parent">The parent.</param>
        /// <param name="action">The action.</param>
        /// <param name="recurse">if set to <c>true</c> [recurse].</param>
        private void AddParentRules( AuthService authService, List<AuthRule> itemRules, List<MyAuthRule> parentRules, ISecured parent, string action, bool recurse )
        {
            if ( parent != null )
            {
                var entityType = Rock.Web.Cache.EntityTypeCache.Read( parent.TypeId );
                foreach ( var auth in authService.GetAuths( parent.TypeId, parent.Id, action ) )
                {
                    var rule = new AuthRule( auth );

                    if ( !itemRules.Exists( r =>
                            r.SpecialRole == rule.SpecialRole &&
                            r.PersonId == rule.PersonId &&
                            r.GroupId == rule.GroupId ) &&
                        !parentRules.Exists( r =>
                            r.AuthRule.SpecialRole == rule.SpecialRole &&
                            r.AuthRule.PersonId == rule.PersonId &&
                            r.AuthRule.GroupId == rule.GroupId ) )
                    {
                        var myRule = new MyAuthRule( rule );
                        myRule.EntityTitle = string.Format( "{0} <small>({1})</small>", parent.ToString(), entityType.FriendlyName ?? entityType.Name ).TrimStart();
                        parentRules.Add( myRule );
                    }
                }

                if ( recurse )
                {
                    AddParentRules( authService, itemRules, parentRules, parent.ParentAuthority, action, true );
                }
            }
        }