November Happy Hour will be moved to Thursday December 5th.

Class AccessAttribute

Defines the ACL list for a typed ContentType.

Inheritance
System.Object
AccessAttribute
Namespace: EPiServer.DataAnnotations
Assembly: EPiServer.dll
Version: 12.0.3
Syntax
public class AccessAttribute : Attribute
Remarks

This attribute only has effect if it is paired with the ContentTypeAttribute. The values from this attribute are used to create the ACL list on the ContentType object. Access rights can be set for Users, Roles and Visitor groups.

Refer to "Attributes" and "Pages, Page Types and Page Templates" under "Content" in the Developer Guide for more information and examples.

Examples
Here is an example on how you can set access on your page type using the Access attribute.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using EPiServer.Core;
using EPiServer.DataAnnotations;
using System.ComponentModel.DataAnnotations;
using EPiServer.Security;
using EPiServer;
using EPiServer.Web;
using EPiServer.Shell.ObjectEditing.EditorDescriptors;
using EPiServer.Shell.ObjectEditing;
using EPiServer.DataAbstraction;

namespace CodeSamples
{
[ContentType(
DisplayName="My Page Type",
Description="Description for this page type",
Order=1024,
GUID="9CBBF910-CB5A-4C72-83AA-EDCF02E8A2BD",
GroupName="My Group",
AvailableInEditMode=true)]
[AvailableContentTypes(Include = new Type[] { typeof(MyPageType2), typeof(MyPageType3) })]
[Access(Users = "niis", Roles = "CmsEditors")]
public class TypedPageWithAttributeSample : PageData
{
[Required]
[Searchable]
[CultureSpecific]
[Editable(true)]
[Display(
Name = "My Heading",
Description = "Heading for my page type.",
GroupName = "My Tab",
Order = 64)]
public virtual string Heading { get; set; }

//An integer between 0 and 130.
[Range(0, 130)]
public virtual int Age { get; set; }

//Validating against a given regular expression.
[RegularExpression("[SomeRegularExpression]")]
public virtual string CustomValidation { get; set; }

//A string with a maximum length of 20 characters.
[StringLength(20)]
public virtual string Header { get; set; }

//Any URL
public virtual Url RedirectPage { get; set; }

//Reference to an image in the EPiServer media system.
[UIHint(UIHint.Image)]
public virtual ContentReference Logotype { get; set; }

//URL to image is also supported but mostly for upgrade support or when there is a need to add custom query parameters to the URL.
[UIHint(UIHint.Image)]
public virtual Url LogotypeAsUrl { get; set; }

//Creates a selection of predefined values.
[SelectOne(SelectionFactoryType=typeof(CustomLanguageSelectionFactory))]
public virtual string LanguageSelection { get; set; }

//Creates a selection of predefined values with the option to select several items.
[SelectMany(SelectionFactoryType=typeof(CustomLanguageSelectionFactory))]
public virtual string MultipleLanguageSelection { get; set; }
}

public class CustomLanguageSelectionFactory : ISelectionFactory
{
public IEnumerable<ISelectItem> GetSelections(ExtendedMetadata metadata)
{
var languages = new List<SelectItem>();

languages.Add(new SelectItem() { Text = "English", Value = "en"});
languages.Add(new SelectItem() { Text = "Swedish", Value = "sv" });
languages.Add(new SelectItem() { Text = "Norwegian", Value = "no" });

return languages;
}
}

[AvailableContentTypes(IncludeOn = new Type[] { typeof(TypedPageWithAttributeSample) })]
[ContentType]
public class MyPageType1 : PageData { }

[AvailableContentTypes(Exclude = new Type[] { typeof(TypedPageWithAttributeSample) })]
[ContentType]
public class MyPageType2 : PageData { }

[AvailableContentTypes(ExcludeOn = new Type[] { typeof(MyPageType1) })]
[ContentType]
public class MyPageType3 : PageData { }

[AvailableContentTypes(Availability = Availability.None)]
[ContentType]
public class MyPageType4 : PageData { }
}

Constructors

AccessAttribute()

Initializes a new instance of the AccessAttribute class.

Declaration
public AccessAttribute()

Properties

Access

Gets the access level.

Declaration
public AccessLevel Access { get; set; }
Property Value
Type Description
AccessLevel

NameSeparator

Gets or sets the characters used to separate the names for the users, roles, and visitor groups. Default value is ",".

Declaration
public string NameSeparator { get; set; }
Property Value
Type Description
System.String

Roles

Gets the names of the roles that has the access level

Declaration
public string Roles { get; set; }
Property Value
Type Description
System.String

Users

Gets the names of the users that has the access level

Declaration
public string Users { get; set; }
Property Value
Type Description
System.String

VisitorGroups

Gets the names of the visitor groups that has the access level

Declaration
public string VisitorGroups { get; set; }
Property Value
Type Description
System.String

Extension Methods

See Also

PageTypeAttribute
AvailablePageTypesAttribute