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
- ObjectDataSourceSelectingEventArgs.cs
- OleDbFactory.cs
- httpapplicationstate.cs
- TemplatedMailWebEventProvider.cs
- PathSegment.cs
- LocatorGroup.cs
- WebPartEditorCancelVerb.cs
- RequiredAttributeAttribute.cs
- MenuScrollingVisibilityConverter.cs
- SortDescriptionCollection.cs
- ArrayConverter.cs
- ByteStack.cs
- Opcode.cs
- MetadataPropertyvalue.cs
- BaseTemplateBuildProvider.cs
- CompositeCollectionView.cs
- ReachIDocumentPaginatorSerializer.cs
- SafeFileMappingHandle.cs
- DbParameterHelper.cs
- NumberSubstitution.cs
- ToolZone.cs
- BindingExpressionUncommonField.cs
- ProfilePropertySettingsCollection.cs
- WebPartTransformerAttribute.cs
- WebPartDeleteVerb.cs
- storagemappingitemcollection.viewdictionary.cs
- FileEnumerator.cs
- WriteableBitmap.cs
- StorageTypeMapping.cs
- _SingleItemRequestCache.cs
- DataTableClearEvent.cs
- XMLDiffLoader.cs
- AdPostCacheSubstitution.cs
- DesignerView.Commands.cs
- QualifiedCellIdBoolean.cs
- AutomationIdentifier.cs
- DiscreteKeyFrames.cs
- Bookmark.cs
- NativeMethods.cs
- CustomError.cs
- CommandPlan.cs
- PropertyCollection.cs
- OleStrCAMarshaler.cs
- DateTimeOffset.cs
- MimeTypeAttribute.cs
- ProcessModelSection.cs
- SliderAutomationPeer.cs
- NameValuePair.cs
- CredentialCache.cs
- Win32Native.cs
- CreateBookmarkScope.cs
- _OverlappedAsyncResult.cs
- ProviderMetadata.cs
- OracleTransaction.cs
- DataDocumentXPathNavigator.cs
- MailMessage.cs
- xmlglyphRunInfo.cs
- UInt16Converter.cs
- FontResourceCache.cs
- DataTableMapping.cs
- WindowsNonControl.cs
- ListItemCollection.cs
- GeneralTransform3DGroup.cs
- Triangle.cs
- ManagementOperationWatcher.cs
- TrackingValidationObjectDictionary.cs
- ListDesigner.cs
- MetadataImporterQuotas.cs
- PropertyChangedEventManager.cs
- CopyAction.cs
- EntityContainerEmitter.cs
- ConnectionPoolManager.cs
- updatecommandorderer.cs
- NativeWindow.cs
- DropTarget.cs
- CacheMode.cs
- EventLog.cs
- TextCompositionManager.cs
- RelationshipConstraintValidator.cs
- Addressing.cs
- ValueUnavailableException.cs
- WriteableOnDemandPackagePart.cs
- CodeNamespaceImportCollection.cs
- CodeCatchClause.cs
- SingleStorage.cs
- InputScopeNameConverter.cs
- JavaScriptString.cs
- RegexTypeEditor.cs
- XmlSchemaCompilationSettings.cs
- WorkflowTerminatedException.cs
- HttpRequestCacheValidator.cs
- InfiniteIntConverter.cs
- AppDomainShutdownMonitor.cs
- SubMenuStyle.cs
- ApplicationException.cs
- UserThread.cs
- UniqueConstraint.cs
- initElementDictionary.cs
- InternalConfigSettingsFactory.cs
- X509Utils.cs