Monday, June 16, 2008

Tilldela sidrättigheter programmatiskt i EpiServer 5

För att tilldela en viss användare utökade rättigheter på en sida i Epi, använd Access Control List egenskapen i PageData objektet (page.ACL) .

Nedanstående exempel skapar upp ett AccessControlEntry för ett visst användarnamn och lägger till rättigheten Edit.
ACEn adderas sedan till sidan. Noter att sidan inte behöver skapas i en ny version för att detta ska fungera.

AccessControlEntry ace = new AccessControlEntry(“username”, AccessLevel.Edit ,SecurityEntityType.User);
myPage.ACL.Add(ace);
myPage.ACL.Save();


Det finns dock ett par viktiga saker att tänka på.

Konstruktorn till AccessControlEntry kan valfritt överladdas med SecurityEntityType .[user/group]. Anges inte denna överladdning är standardbeteendet group. Det besynnerliga med detta är att Epi kommer att acceptera din kod även om gruppen inte finns.

Om du försöker sätta rättigheterna för en användare (utan att ange SecurityEntityType) och sedan loggar in Edit som administratör kommer du se följande fenomen:


Sidan som du tilldelade rättigheterna har fått en ny grupp med rättigheter tilldelat sig. Gruppen har samma namn som din användare . Gruppen har absolut ingen koppling till din användare och söker du efter gruppen kommer du märka att den faktisk inte existerar över huvud taget. Det enda sättet du kan se att det faktisk är en grupprättighet är på ikonen framför användarnamnet.

Om du vill ange fler rättigheter till sidan kan du enkelt göra detta som i exemplet nedan:
AccessControlEntry ace = new AccessControlEntry(“username”, AccessLevel.Create ¦ AccessLevel.Delete ¦ AccessLevel.Edit ¦ AccessLevel.Publish
¦ AccessLevel.Read,SecurityEntityType.User);


Det går inte att tilldela rättigheterna fler än en gång. Om du behöver sätt om rättigheterna på en sida måste sidans ACL rensas med clear kommandot:
myPage.ACL.clear();