//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//------------------------------------------------------------------------------
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.ComponentModel;
using System.Web.Security; // for CookieProtection Enum
using System.Security.Permissions;
/*
*/
public sealed class RoleManagerSection : ConfigurationSection {
private static ConfigurationPropertyCollection _properties;
private static readonly ConfigurationProperty _propEnabled =
new ConfigurationProperty("enabled",
typeof(bool),
false,
ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propUseCookies =
new ConfigurationProperty("cacheRolesInCookie",
typeof(bool),
false,
ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propCookieName =
new ConfigurationProperty("cookieName",
typeof(string),
".ASPXROLES",
StdValidatorsAndConverters.WhiteSpaceTrimStringConverter,
StdValidatorsAndConverters.NonEmptyStringValidator,
ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propCookieTimeout =
new ConfigurationProperty("cookieTimeout",
typeof(TimeSpan),
TimeSpan.FromMinutes(30.0),
StdValidatorsAndConverters.TimeSpanMinutesOrInfiniteConverter,
StdValidatorsAndConverters.PositiveTimeSpanValidator,
ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propCookiePath =
new ConfigurationProperty("cookiePath",
typeof(string),
"/",
StdValidatorsAndConverters.WhiteSpaceTrimStringConverter,
StdValidatorsAndConverters.NonEmptyStringValidator,
ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propCookieRequireSSL =
new ConfigurationProperty("cookieRequireSSL",
typeof(bool),
false,
ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propCookieSlidingExpiration =
new ConfigurationProperty("cookieSlidingExpiration",
typeof(bool),
true,
ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propCookieProtection =
new ConfigurationProperty("cookieProtection",
typeof(CookieProtection),
CookieProtection.All,
ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propDefaultProvider =
new ConfigurationProperty("defaultProvider",
typeof(string),
"AspNetSqlRoleProvider",
null,
StdValidatorsAndConverters.NonEmptyStringValidator,
ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propProviders =
new ConfigurationProperty("providers",
typeof(ProviderSettingsCollection),
null,
ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propCreatePersistentCookie =
new ConfigurationProperty("createPersistentCookie",
typeof(bool),
false,
ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propDomain =
new ConfigurationProperty("domain",
typeof(string),
null,
ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propMaxCachedResults =
new ConfigurationProperty("maxCachedResults",
typeof(int),
25,
ConfigurationPropertyOptions.None);
private enum InheritedType {
inNeither = 0,
inParent = 1,
inSelf = 2,
inBothSame = 3,
inBothDiff = 4,
}
static RoleManagerSection() {
// Property initialization
_properties = new ConfigurationPropertyCollection();
_properties.Add(_propEnabled);
_properties.Add(_propUseCookies);
_properties.Add(_propCookieName);
_properties.Add(_propCookieTimeout);
_properties.Add(_propCookiePath);
_properties.Add(_propCookieRequireSSL);
_properties.Add(_propCookieSlidingExpiration);
_properties.Add(_propCookieProtection);
_properties.Add(_propDefaultProvider);
_properties.Add(_propProviders);
_properties.Add(_propCreatePersistentCookie);
_properties.Add(_propDomain);
_properties.Add(_propMaxCachedResults);
}
public RoleManagerSection() {
}
protected override ConfigurationPropertyCollection Properties {
get {
return _properties;
}
}
[ConfigurationProperty("enabled", DefaultValue = false)]
public bool Enabled {
get {
return (bool)base[_propEnabled];
}
set {
base[_propEnabled] = value;
}
}
[ConfigurationProperty("createPersistentCookie", DefaultValue = false)]
public bool CreatePersistentCookie {
get {
return (bool)base[_propCreatePersistentCookie];
}
set {
base[_propCreatePersistentCookie] = value;
}
}
[ConfigurationProperty("cacheRolesInCookie", DefaultValue = false)]
public bool CacheRolesInCookie {
get {
return (bool)base[_propUseCookies];
}
set {
base[_propUseCookies] = value;
}
}
[ConfigurationProperty("cookieName", DefaultValue = ".ASPXROLES")]
[TypeConverter(typeof(WhiteSpaceTrimStringConverter))]
[StringValidator(MinLength = 1)]
public string CookieName {
get {
return (string)base[_propCookieName];
}
set {
base[_propCookieName] = value;
}
}
[ConfigurationProperty("cookieTimeout", DefaultValue = "00:30:00")]
[TypeConverter(typeof(TimeSpanMinutesOrInfiniteConverter))]
[TimeSpanValidator(MinValueString="00:00:00", MaxValueString=TimeSpanValidatorAttribute.TimeSpanMaxValue)]
public TimeSpan CookieTimeout {
get {
return (TimeSpan)base[_propCookieTimeout];
}
set {
base[_propCookieTimeout] = value;
}
}
[ConfigurationProperty("cookiePath", DefaultValue = "/")]
[TypeConverter(typeof(WhiteSpaceTrimStringConverter))]
[StringValidator(MinLength = 1)]
public string CookiePath {
get {
return (string)base[_propCookiePath];
}
set {
base[_propCookiePath] = value;
}
}
[ConfigurationProperty("cookieRequireSSL", DefaultValue = false)]
public bool CookieRequireSSL {
get {
return (bool)base[_propCookieRequireSSL];
}
set {
base[_propCookieRequireSSL] = value;
}
}
[ConfigurationProperty("cookieSlidingExpiration", DefaultValue = true)]
public bool CookieSlidingExpiration {
get {
return (bool)base[_propCookieSlidingExpiration];
}
set {
base[_propCookieSlidingExpiration] = value;
}
}
[ConfigurationProperty("cookieProtection", DefaultValue = CookieProtection.All)]
public CookieProtection CookieProtection {
get {
return (CookieProtection)base[_propCookieProtection];
}
set {
base[_propCookieProtection] = value;
}
}
[ConfigurationProperty("defaultProvider", DefaultValue = "AspNetSqlRoleProvider")]
[TypeConverter(typeof(WhiteSpaceTrimStringConverter))]
[StringValidator(MinLength = 1)]
public string DefaultProvider {
get {
return (string)base[_propDefaultProvider];
}
set {
base[_propDefaultProvider] = value;
}
}
[ConfigurationProperty("providers")]
public ProviderSettingsCollection Providers {
get {
return (ProviderSettingsCollection)base[_propProviders];
}
}
[ConfigurationProperty("domain")]
public string Domain {
get {
return (string)base[_propDomain];
}
set {
base[_propDomain] = value;
}
}
[ConfigurationProperty("maxCachedResults", DefaultValue = 25)]
public int MaxCachedResults {
get {
return (int)base[_propMaxCachedResults];
}
set {
base[_propMaxCachedResults] = value;
}
}
} // class RoleManagerSection
}