e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
97 lines
2.7 KiB
C#
97 lines
2.7 KiB
C#
//------------------------------------------------------------------------------
|
|
// <copyright file="RoleGroup.cs" company="Microsoft">
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// </copyright>
|
|
//------------------------------------------------------------------------------
|
|
|
|
namespace System.Web.UI.WebControls {
|
|
|
|
using System.ComponentModel;
|
|
using System.Security.Principal;
|
|
using System.Web.Security;
|
|
|
|
|
|
/// <devdoc>
|
|
/// Associates a collection of roles with a template.
|
|
/// </devdoc>
|
|
public sealed class RoleGroup {
|
|
private ITemplate _contentTemplate;
|
|
private string[] _roles;
|
|
|
|
|
|
/// <devdoc>
|
|
/// The template associated with the roles.
|
|
/// </devdoc>
|
|
[
|
|
Browsable(false),
|
|
DefaultValue(null),
|
|
PersistenceMode(PersistenceMode.InnerProperty),
|
|
TemplateContainer(typeof(LoginView)),
|
|
]
|
|
public ITemplate ContentTemplate {
|
|
get {
|
|
return _contentTemplate;
|
|
}
|
|
set {
|
|
_contentTemplate = value;
|
|
}
|
|
}
|
|
|
|
|
|
/// <devdoc>
|
|
/// The roles associated with the template.
|
|
/// </devdoc>
|
|
[
|
|
TypeConverterAttribute(typeof(StringArrayConverter)),
|
|
]
|
|
public string[] Roles {
|
|
get {
|
|
if (_roles == null) {
|
|
return new string[0];
|
|
}
|
|
else {
|
|
// Must clone to preserve encapsulation
|
|
return (string[]) _roles.Clone();
|
|
}
|
|
}
|
|
set {
|
|
if (value == null) {
|
|
_roles = value;
|
|
}
|
|
else {
|
|
// Must clone to preserve encapsulation
|
|
_roles = (string[]) value.Clone();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/// <devdoc>
|
|
/// Whether the user is in any of the roles.
|
|
/// </devdoc>
|
|
public bool ContainsUser(IPrincipal user) {
|
|
if (user == null) {
|
|
throw new ArgumentNullException("user");
|
|
}
|
|
if (_roles == null) {
|
|
return false;
|
|
}
|
|
foreach (string role in _roles) {
|
|
if (user.IsInRole(role)) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
|
|
/// <devdoc>
|
|
/// For appearance in designer collection editor.
|
|
/// </devdoc>
|
|
public override string ToString() {
|
|
StringArrayConverter converter = new StringArrayConverter();
|
|
return converter.ConvertToString(Roles);
|
|
}
|
|
}
|
|
}
|