Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Extensions / ApplicationServices / RoleService.cs / 1305376 / RoleService.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.ApplicationServices {
using System;
using System.Diagnostics.CodeAnalysis;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Configuration;
using System.Runtime.Serialization;
using System.Web;
using System.Web.Security;
using System.Web.Configuration;
using System.Web.Management;
using System.Web.Resources;
using System.Security.Principal;
using System.Web.Hosting;
using System.Threading;
using System.Configuration.Provider;
[
AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required),
ServiceContract(Namespace = "http://asp.net/ApplicationServices/v200"),
ServiceBehavior(Namespace="http://asp.net/ApplicationServices/v200", InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)
]
public class RoleService {
private static object _selectingProviderEventHandlerLock = new object();
private static EventHandler _selectingProvider;
public static event EventHandler SelectingProvider {
add {
lock (_selectingProviderEventHandlerLock) {
_selectingProvider += value;
}
}
remove {
lock (_selectingProviderEventHandlerLock) {
_selectingProvider -= value;
}
}
}
private static void EnsureProviderEnabled() {
if (!Roles.Enabled) {
throw new ProviderException(AtlasWeb.RoleService_RolesFeatureNotEnabled);
}
}
private RoleProvider GetRoleProvider(IPrincipal user) {
string providerName = Roles.Provider.Name;
SelectingProviderEventArgs args = new SelectingProviderEventArgs(user, providerName);
OnSelectingProvider(args);
providerName = args.ProviderName;
RoleProvider provider = Roles.Providers[providerName];
if (provider == null) {
throw new ProviderException(AtlasWeb.RoleService_RoleProviderNotFound);
}
return provider;
}
[OperationContract]
public string[] GetRolesForCurrentUser() {
try {
ApplicationServiceHelper.EnsureRoleServiceEnabled();
EnsureProviderEnabled();
IPrincipal user = ApplicationServiceHelper.GetCurrentUser(HttpContext.Current);
string username = ApplicationServiceHelper.GetUserName(user);
RoleProvider provider = GetRoleProvider(user);
return provider.GetRolesForUser(username);
}
catch (Exception e) {
LogException(e);
throw;
}
}
[OperationContract]
public bool IsCurrentUserInRole(string role) {
if (role == null) {
throw new ArgumentNullException("role");
}
try {
ApplicationServiceHelper.EnsureRoleServiceEnabled();
EnsureProviderEnabled();
IPrincipal user = ApplicationServiceHelper.GetCurrentUser(HttpContext.Current);
string username = ApplicationServiceHelper.GetUserName(user);
RoleProvider provider = GetRoleProvider(user);
return provider.IsUserInRole(username, role);
}
catch (Exception e) {
LogException(e);
throw;
}
}
private void LogException(Exception e) {
WebServiceErrorEvent errorevent = new WebServiceErrorEvent(AtlasWeb.UnhandledExceptionEventLogMessage, this, e);
errorevent.Raise();
}
private void OnSelectingProvider(SelectingProviderEventArgs e) {
EventHandler handler = _selectingProvider;
if (handler != null) {
handler(this, e);
}
}
//hiding public constructor
internal RoleService() {
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RelationshipEnd.cs
- AsymmetricKeyExchangeDeformatter.cs
- WebProxyScriptElement.cs
- HitTestDrawingContextWalker.cs
- _FixedSizeReader.cs
- ContentOnlyMessage.cs
- Timer.cs
- DataListItemEventArgs.cs
- LoginDesigner.cs
- SHA256.cs
- SqlTrackingQuery.cs
- IPHostEntry.cs
- RequestResizeEvent.cs
- ColorConverter.cs
- CommandConverter.cs
- LocationSectionRecord.cs
- RowCache.cs
- ClientConfigPaths.cs
- __Error.cs
- TypeLibConverter.cs
- SettingsAttributes.cs
- EmptyReadOnlyDictionaryInternal.cs
- CacheMemory.cs
- FastEncoder.cs
- AuditLevel.cs
- OleDbWrapper.cs
- EventLogger.cs
- Metafile.cs
- SystemResourceHost.cs
- InfoCardKeyedHashAlgorithm.cs
- FrameworkElement.cs
- IriParsingElement.cs
- GraphicsContext.cs
- ProtocolsConfigurationEntry.cs
- X509CertificateTrustedIssuerElement.cs
- FontStretchConverter.cs
- IdentityHolder.cs
- HybridDictionary.cs
- CodeEventReferenceExpression.cs
- RoleService.cs
- TokenBasedSetEnumerator.cs
- ServiceMetadataBehavior.cs
- PkcsMisc.cs
- Section.cs
- COM2IVsPerPropertyBrowsingHandler.cs
- PhysicalAddress.cs
- MemberRelationshipService.cs
- JapaneseCalendar.cs
- EventLogLink.cs
- XPathItem.cs
- PartialList.cs
- SqlConnectionPoolProviderInfo.cs
- WebBrowserContainer.cs
- ComponentResourceKeyConverter.cs
- ScopelessEnumAttribute.cs
- DateTimeStorage.cs
- RSAPKCS1SignatureDeformatter.cs
- Label.cs
- TaskHelper.cs
- OpacityConverter.cs
- XmlILModule.cs
- DerivedKeySecurityTokenStub.cs
- StdRegProviderWrapper.cs
- DesignSurfaceServiceContainer.cs
- TransactionChannelFactory.cs
- ResXBuildProvider.cs
- XmlSerializerFaultFormatter.cs
- webeventbuffer.cs
- localization.cs
- ObjectViewListener.cs
- XmlSerializerNamespaces.cs
- DataGridViewCellValidatingEventArgs.cs
- PolicyChain.cs
- XmlSignatureProperties.cs
- QueryStringParameter.cs
- GraphicsState.cs
- MimeMapping.cs
- ServerValidateEventArgs.cs
- HtmlElementCollection.cs
- SafeNativeMethods.cs
- CreateUserWizard.cs
- UpdateExpressionVisitor.cs
- ManagementEventArgs.cs
- SizeConverter.cs
- HtmlEncodedRawTextWriter.cs
- SqlFacetAttribute.cs
- MimeBasePart.cs
- ModelPerspective.cs
- FilePrompt.cs
- httpstaticobjectscollection.cs
- TableLayoutStyle.cs
- ItemsPresenter.cs
- MatrixTransform.cs
- DataTableReader.cs
- CollectionChangeEventArgs.cs
- AsyncDataRequest.cs
- Oid.cs
- SubpageParaClient.cs
- ExecutedRoutedEventArgs.cs
- WinFormsSecurity.cs