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
- AnnotationComponentChooser.cs
- X509Certificate2Collection.cs
- QueueProcessor.cs
- StateMachine.cs
- WebPartManagerInternals.cs
- CreateUserWizard.cs
- ColumnResizeUndoUnit.cs
- WindowsGraphicsCacheManager.cs
- PointLight.cs
- ApplicationManager.cs
- IdentityReference.cs
- CompareValidator.cs
- ReadWriteSpinLock.cs
- DelayDesigner.cs
- Expressions.cs
- CodeNamespaceImport.cs
- SafeProcessHandle.cs
- ToolStripProgressBar.cs
- HttpHandlerActionCollection.cs
- TdsParser.cs
- DataGridAutomationPeer.cs
- FullTrustAssemblyCollection.cs
- InstanceNotReadyException.cs
- MainMenu.cs
- ServerValidateEventArgs.cs
- RangeValueProviderWrapper.cs
- Random.cs
- PrivateFontCollection.cs
- WebMethodAttribute.cs
- WorkflowInstanceContextProvider.cs
- HttpTransportBindingElement.cs
- SecurityContextSecurityToken.cs
- TimeSpanOrInfiniteConverter.cs
- PermissionSetEnumerator.cs
- TypedReference.cs
- TargetControlTypeCache.cs
- FixedBufferAttribute.cs
- wgx_commands.cs
- ToolStripDropDownItem.cs
- MDIControlStrip.cs
- WebScriptMetadataInstanceContextProvider.cs
- StoragePropertyMapping.cs
- BamlReader.cs
- SoapInteropTypes.cs
- CountAggregationOperator.cs
- TextRunCacheImp.cs
- Model3DCollection.cs
- HashLookup.cs
- LateBoundBitmapDecoder.cs
- ProcessStartInfo.cs
- InputScope.cs
- PointLightBase.cs
- TemplateBaseAction.cs
- AnnotationComponentManager.cs
- OdbcConnectionHandle.cs
- XPathParser.cs
- CompilerResults.cs
- RecommendedAsConfigurableAttribute.cs
- InterleavedZipPartStream.cs
- ProjectedWrapper.cs
- DiscoveryClientOutputChannel.cs
- XdrBuilder.cs
- Geometry.cs
- SchemaTableOptionalColumn.cs
- StringFunctions.cs
- PropertyOrder.cs
- RichTextBox.cs
- SystemEvents.cs
- GlyphCache.cs
- DocumentReferenceCollection.cs
- ReferenceEqualityComparer.cs
- LambdaCompiler.ControlFlow.cs
- DataGridItem.cs
- PointIndependentAnimationStorage.cs
- TimeoutTimer.cs
- ThemeDirectoryCompiler.cs
- PropertyChangingEventArgs.cs
- Track.cs
- RegistryExceptionHelper.cs
- SafeFindHandle.cs
- RenderTargetBitmap.cs
- SiteMapDataSource.cs
- DataServicePagingProviderWrapper.cs
- WebPartConnectionsConfigureVerb.cs
- WorkflowNamespace.cs
- Util.cs
- DataTableNewRowEvent.cs
- ScaleTransform3D.cs
- ExpressionBuilder.cs
- SQLInt32.cs
- dsa.cs
- BrowserCapabilitiesCompiler.cs
- XPathDescendantIterator.cs
- WebPartAddingEventArgs.cs
- XXXInfos.cs
- ThreadPool.cs
- NativeCppClassAttribute.cs
- printdlgexmarshaler.cs
- OracleConnectionStringBuilder.cs
- MembershipUser.cs