-
Notifications
You must be signed in to change notification settings - Fork 1.3k
/
Copy pathAuthorizationSection.cs
93 lines (79 loc) · 3.13 KB
/
AuthorizationSection.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
//------------------------------------------------------------------------------
// <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
}