Lagre rettigheter programatisk

Vote:
 
Hei. Jeg oppretter en ny side og ønsker å legge til en eksisterende buker som skal ha publisering og redigeringsrettigheter for siden. Jeg har prøvd følgende: newPage.Property["PersonId"].Value=txtPersonId.Value; newPage.Property["PageExternalURL"].Value=_user.Name; newPage.Property["PersonalPage"].Value = NewPersonalPage(txtPersonId.Value,sid); newPage.ACL.Add(_user.ID, EPiServer.Security.AccessLevel.Publish); Global.EPDataFactory.Save(newPage,EPiServer.DataAccess.SaveAction.Publish); Brukeren får ingen rettigheter på siden. Magne Johansen
#12123
Sep 03, 2004 11:18
Vote:
 
ACL sparas inte tillsammans med sidan på samma sätt som bl.a. dynamiska egenskaper inte sparas. Enklaste sättet att läsa ut den sparade sidan igen och sedan använda ACL.Save.
#13699
Sep 14, 2004 17:37
Vote:
 
Kan Per ge ett bättre exempel. Jag har ett liknande fall och har försökt samma sak. ACL.Save kan jag inte hitta annat än i klassen PageAccessControlList men kan inte se hur jag ska använda den.
#13700
Oct 21, 2004 16:56
Vote:
 
PageData page = Global.EPDataFactory.GetPage( new PageReference(9999) ); page.ACL.Add( Sid.Load("KalleKula").ID, AccessLevel.Read ); page.ACL.Save();
#13701
Oct 22, 2004 10:53
Vote:
 
Site där detta ska implementeras är en EPi 4.22 och i den versionen verkar inte ACL.Save() vara införd. Finns det någon annan väg runt detta (Uppgradering till 4.3 eller 4.4 är inte planerad förrän första kvartalet 2005)
#13702
Oct 25, 2004 9:42
Vote:
 
Nja, via EPiServer.DataAccess.PageAclDB, dessa API:r är odokumenterade och osupporterade vilket innebär att du gör det på egen risk.
#13703
Oct 25, 2004 10:16
Vote:
 
Hei Jeg gjør som i eksempelet men får: INSERT statement conflicted with COLUMN FOREIGN KEY constraint 'FK_tblACL_tblPage' .... Jeg gjør ACL-endring ved Global.EPDataFactory.CreatedPage
#13704
Mar 10, 2006 11:21
Vote:
 
Hi, I get the exact same exception as above. Anyone who knows how to solve this or work around it? I am using asp.net 2.0 with EPiServ 4.61. Thankful for any input at all :) /Niklas Furberg
#13705
Jun 03, 2007 18:54
Vote:
 
Hi, I found out how to do this. What you need to do is to save the page first, and then get the latest version with accesslevel to NoAccess, then save the new ACL-right to the page. Global.EPDataFactory.Save(page, EPiServer.DataAccess.SaveAction.CheckIn, AccessLevel.Read); PageData latestVersion = GetLatestVersion(page.PageLink); SetAccessLevel(latestVersion, user); public static PageData GetLatestVersion(PageReference pageRef) { PageVersionCollection pvc = PageVersion.List(pageRef); if (pvc.Count != 0) { PageReference savedVersionRef = pvc[pvc.Count - 1].ID; PageData CurrentPageVersion = Global.EPDataFactory.GetPage(savedVersionRef, AccessControlList.NoAccess); return CurrentPageVersion ?? null; } else return null; } private static void SetAccessLevel(PageData page, UnifiedPrincipal user) { if (!page.ACL.Exists(user.Sid)) { page.ACL.Add(user.Sid, AccessLevel.Read | AccessLevel.Edit | AccessLevel.Publish | AccessLevel.Delete); page.ACL.Save(); } } Hope this will help you guys (most likely new people since the question is quite old :) Kjetil Simensen
#13706
Feb 12, 2008 10:04
* You are NOT allowed to include any hyperlinks in the post because your account hasn't associated to your company. User profile should be updated.