File: Configuration\AuthorizationSection.cs
Project: ndp\fx\src\xsp\system\Web\System.Web.csproj (System.Web)
//------------------------------------------------------------------------------
// <copyright file="AuthorizationSection.cs" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
 
namespace System.Web.Configuration {
    using System;
    using System.Xml;
    using System.Configuration;
    using System.Collections.Specialized;
    using System.Collections;
    using System.Globalization;
    using System.IO;
    using System.Text;
    using System.Security.Principal;
    using System.Web.Util;
    using System.ComponentModel;
    using System.Security.Permissions;
 
    /*
        <authorization>
 
            <!--
            allow/deny Attributes:
              users="[*|?|name]"
                * - All users
                ? - Anonymous users
                [name] - Named user
              roles="[name]"
            -->
            <allow users="*" />
                <!--  <allow     users="[comma separated list of users]"
                                 roles="[comma separated list of roles]"
                                 verbs="[comma separated list of verbs]" />
                      <deny      users="[comma separated list of users]"
                                 roles="[comma separated list of roles]"
                                 verbs="[comma separated list of verbs]" />
                -->
 
        </authorization>
 
        <authorization>
            <allow users="*" />
        </authorization>
 
        */
 
    /// <devdoc>
    ///     <para> Adds Authorization specific information to this section.        
    ///     </para>
    /// </devdoc>
    public sealed class AuthorizationSection : ConfigurationSection {
        private static ConfigurationPropertyCollection _properties;
        private static readonly ConfigurationProperty _propRules =
            new ConfigurationProperty(null, typeof(AuthorizationRuleCollection), null, ConfigurationPropertyOptions.IsDefaultCollection);
 
        private bool _EveryoneAllowed = false;
        internal bool EveryoneAllowed { get { return _EveryoneAllowed; } }
 
        static AuthorizationSection() {
            // Property initialization
            _properties = new ConfigurationPropertyCollection();
            _properties.Add(_propRules);
        }
 
        public AuthorizationSection() {
        }
 
        protected override ConfigurationPropertyCollection Properties {
            get {
                return _properties;
            }
        }
 
        [ConfigurationProperty("", IsDefaultCollection = true)]
        public AuthorizationRuleCollection Rules {
            get {
                return (AuthorizationRuleCollection)base[_propRules];
            }
        }
 
        protected override void PostDeserialize() {
            if (Rules.Count > 0) {
                _EveryoneAllowed = (Rules[0].Action == AuthorizationRuleAction.Allow && Rules[0].Everyone);
            }
        }
 
        internal bool IsUserAllowed(IPrincipal user, String verb) {
            return Rules.IsUserAllowed(user, verb);
        }
    } // class AuthorizationSection
}