Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Base / System / Security / RightsManagement / Grant.cs / 1305600 / Grant.cs
//------------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
// Description: This class represents a (ContentUser , ContentRight) pair.
//
// History:
// 06/01/2005: IgorBel : Initial Implementation
//
//-----------------------------------------------------------------------------
using System;
using System.Collections;
using System.Diagnostics;
using System.Globalization;
using System.Windows;
using MS.Internal.Security.RightsManagement;
using SecurityHelper=MS.Internal.WindowsBase.SecurityHelper;
namespace System.Security.RightsManagement
{
///
/// ContentGrant class represent a (ContentUser , ContentRight) pair this is
/// a basic building block for structures that need to express information about rights granted to a document.
///
///
/// Critical: This class expose access to methods that eventually do one or more of the the following
/// 1. call into unmanaged code
/// 2. affects state/data that will eventually cross over unmanaged code boundary
/// 3. Return some RM related information which is considered private
///
/// TreatAsSafe: This attribute automatically applied to all public entry points. All the public entry points have
/// Demands for RightsManagementPermission at entry to counter the possible attacks that do
/// not lead to the unmanaged code directly(which is protected by another Demand there) but rather leave
/// some status/data behind which eventually might cross the unamanaged boundary.
///
[SecurityCritical(SecurityCriticalScope.Everything)]
public class ContentGrant
{
///
/// Constructor for the read only ContentGrant class. It takes values for user and right as parameters.
///
public ContentGrant(ContentUser user, ContentRight right)
: this(user, right, DateTime.MinValue, DateTime.MaxValue)
{
}
///
/// Constructor for the read only ContentGrant class. It takes values for
/// user, right, validFrom, and validUntil as parameters.
///
public ContentGrant(ContentUser user, ContentRight right, DateTime validFrom, DateTime validUntil)
{
SecurityHelper.DemandRightsManagementPermission();
// Add validation here
if (user == null)
{
throw new ArgumentNullException("user");
}
if ((right != ContentRight.View) &&
(right != ContentRight.Edit) &&
(right != ContentRight.Print) &&
(right != ContentRight.Extract) &&
(right != ContentRight.ObjectModel) &&
(right != ContentRight.Owner) &&
(right != ContentRight.ViewRightsData) &&
(right != ContentRight.Forward) &&
(right != ContentRight.Reply) &&
(right != ContentRight.ReplyAll) &&
(right != ContentRight.Sign) &&
(right != ContentRight.DocumentEdit) &&
(right != ContentRight.Export))
{
throw new ArgumentOutOfRangeException("right");
}
if (validFrom > validUntil)
{
throw new ArgumentOutOfRangeException("validFrom");
}
_user = user;
_right = right;
_validFrom = validFrom;
_validUntil = validUntil;
}
///
/// Read only User propery.
///
public ContentUser User
{
get
{
SecurityHelper.DemandRightsManagementPermission();
return _user;
}
}
///
/// Read only Right propery.
///
public ContentRight Right
{
get
{
SecurityHelper.DemandRightsManagementPermission();
return _right;
}
}
///
/// The starting validity time, in UTC time, for the grant.
///
public DateTime ValidFrom
{
get
{
SecurityHelper.DemandRightsManagementPermission();
return _validFrom;
}
}
///
/// The ending validity time, in UTC time, for the grant.
///
public DateTime ValidUntil
{
get
{
SecurityHelper.DemandRightsManagementPermission();
return _validUntil;
}
}
private ContentUser _user;
private ContentRight _right;
private DateTime _validFrom;
private DateTime _validUntil;
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DataViewListener.cs
- ApplicationId.cs
- TextDpi.cs
- VisualStyleRenderer.cs
- XmlReaderSettings.cs
- PropertyDescriptorComparer.cs
- TableRow.cs
- UpdatePanelTrigger.cs
- DomNameTable.cs
- PersonalizableTypeEntry.cs
- EventDescriptor.cs
- MouseOverProperty.cs
- QilChoice.cs
- ObjectAssociationEndMapping.cs
- TreeViewAutomationPeer.cs
- BitmapInitialize.cs
- NavigationEventArgs.cs
- HtmlDocument.cs
- ImageMetadata.cs
- ProgressBarRenderer.cs
- DataObjectAttribute.cs
- RelationshipConverter.cs
- GlyphRun.cs
- AppDomain.cs
- ThreadStaticAttribute.cs
- precedingsibling.cs
- ObjectContext.cs
- AliasGenerator.cs
- BulletedListDesigner.cs
- SuspendDesigner.cs
- TileModeValidation.cs
- MexServiceChannelBuilder.cs
- ApplicationServiceHelper.cs
- XNameConverter.cs
- DetailsViewRowCollection.cs
- SocketPermission.cs
- LinqDataSourceHelper.cs
- TypeRestriction.cs
- EventLogConfiguration.cs
- FormatSettings.cs
- DataObject.cs
- LinqDataSourceStatusEventArgs.cs
- AnnotationHighlightLayer.cs
- DynamicMetaObjectBinder.cs
- ListViewSortEventArgs.cs
- ReverseComparer.cs
- BackEase.cs
- MethodRental.cs
- Font.cs
- HttpServerUtilityBase.cs
- ProfilePropertySettings.cs
- TiffBitmapEncoder.cs
- ToolStripDropDownMenu.cs
- ArgumentNullException.cs
- PreviewKeyDownEventArgs.cs
- WaitHandleCannotBeOpenedException.cs
- DaylightTime.cs
- LocalizableResourceBuilder.cs
- CombinedGeometry.cs
- RepeaterItemEventArgs.cs
- Publisher.cs
- ConnectionString.cs
- HttpCookiesSection.cs
- BufferedStream2.cs
- WeakReference.cs
- Registry.cs
- Span.cs
- SqlNodeTypeOperators.cs
- CommentEmitter.cs
- SQLDoubleStorage.cs
- ObjectPersistData.cs
- entitydatasourceentitysetnameconverter.cs
- ColumnWidthChangedEvent.cs
- HttpClientCertificate.cs
- IdentityModelDictionary.cs
- HttpCacheVary.cs
- AspNetRouteServiceHttpHandler.cs
- MarkupExtensionReturnTypeAttribute.cs
- List.cs
- AutomationPropertyInfo.cs
- XmlExpressionDumper.cs
- ModelPropertyCollectionImpl.cs
- ListViewDataItem.cs
- ScrollPattern.cs
- DtdParser.cs
- AsyncResult.cs
- LogWriteRestartAreaState.cs
- CachingParameterInspector.cs
- DependencyPropertyConverter.cs
- TypeElement.cs
- WSSecureConversationDec2005.cs
- RecordsAffectedEventArgs.cs
- CustomPopupPlacement.cs
- Parallel.cs
- ResolveNameEventArgs.cs
- TypefaceCollection.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- SmiEventSink_DeferedProcessing.cs
- XmlArrayItemAttribute.cs
- BaseCodePageEncoding.cs