//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//------------------------------------------------------------------------------
namespace System.Web.UI.WebControls {
using System.ComponentModel;
using System.Security.Principal;
using System.Web.Security;
///
/// Associates a collection of roles with a template.
///
public sealed class RoleGroup {
private ITemplate _contentTemplate;
private string[] _roles;
///
/// The template associated with the roles.
///
[
Browsable(false),
DefaultValue(null),
PersistenceMode(PersistenceMode.InnerProperty),
TemplateContainer(typeof(LoginView)),
]
public ITemplate ContentTemplate {
get {
return _contentTemplate;
}
set {
_contentTemplate = value;
}
}
///
/// The roles associated with the template.
///
[
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();
}
}
}
///
/// Whether the user is in any of the roles.
///
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;
}
///
/// For appearance in designer collection editor.
///
public override string ToString() {
StringArrayConverter converter = new StringArrayConverter();
return converter.ConvertToString(Roles);
}
}
}