Dynamic properties och rättigheter

Vote:
 
Hej Ska det vara så att dynamic properties kräver Admin-rättigheter på en sida? Borde det inte räcka med Edit-rättigheter? (Kan man ställa om EPiServer så Edit räcker?) Mvh Henrik Vaks
#17258
Mar 25, 2008 19:32
Vote:
 
Ja, det är standardinställningar i EPiServer. Användare måste ha Administer-rättighet för att komma åt funktionerna "Ändra dynamiska egenskaper" och "Ändra rättigheter". Du kan ändra på inställningarna genom att ändra RequiredAccess-attributet i edit/CommandActions.ascx för de olika funktionerna. Möjliga värden på RequiredAccess är Read, Create, Edit, Delete, Publish och Administer (vg se AccessLevel i SDK för mer info).
#17868
Mar 25, 2008 19:42
Vote:
 
Tack!! /Henrik
#17869
Mar 25, 2008 19:42
Vote:
 
Hm, det där löste bara halva problemet: redaktören med Edit-rättigheter (men ej Admin-rättigheter) kan nu klicka på knappen, den är inte längre utgråad. Men sidan för att ställa in dynamic properties på (EditDynProp.aspx) har denne fortfarande inte rättigheter till. /Henrik
#17870
Mar 25, 2008 19:42
Vote:
 
Själva knappen låses upp med det ovan, men när man klickar på den så får man: ---------------------------- Access denied You do not have sufficient rights to view this page. ---------------------------- Det verkar som om det är ytterligare någonstans man måste ändra. Någon som vet var? Mvh Henrik Vaks
#17871
Mar 25, 2008 19:42
Vote:
 
Du har så rätt. Jag missade att det finns ett "lager" till av säkerhet med i bilden. CommandActions.ascx styr endast vem som är behörig att trycka på knapparna, den styr inte säkerheten på det som händer efter att man tryckt på en knapp, något jag missade i all hast. Så här löser du resten... Dynamiska egenskaper styrs av EditDynProp.aspx och det är där man hamnar när man klickar på knappen ifråga. I codebehind-klassen EPiServer.Edit.EditDynProp finns det en RequiredAccess-property som du kan överlagra. Förutom detta måste du göra en egen variant av aspx-filen. Här kan jag tänka mig tre vägar: a) Slå på Alternate files i EPiServer och skapa katalogen edit_ där du lägger kopian av aspx-filen. b) Skapa kopia av EditDynProp.aspx och döp kopian exempelvis till EditDynPropEditAccess.aspx. Ändra i CommandActions.ascx så att man hamnar på den nya aspx-sidan istället för orginalet. c) Ändra direkt i EditDynProp.aspx så att den ärver från din egna variant av EditDynProp-klassen. Av ovanstående är (a) bäst ur förvaltningssynpunkt. De andra två alternativen håller tills det är dags för uppgradering av EPiServer, då dom kommer att skrivas över. Välj vilket som passar dig bäst. För enkelhetens skull beskriver jag (c), den är enklast... 1. Skapa en ny klass i ditt projekt (filnamn förslagsvis edit/EditDynPropEditAccess.cs) som ser ut så här: using EPiServer.Security; namespace development { public class EditDynPropEditAccess : EPiServer.Edit.EditDynProp { public override AccessLevel RequiredAccess() { return AccessLevel.Edit; } } } 2. Ändra i EditDynProp.aspx så att den ärver från din klass, dvs <%@ Page language="c#" Codebehind="EditDynPropEditAccess.cs" AutoEventWireup="false" Inherits="development.EditDynPropEditAccess" %> Och det är allt.
#17872
Mar 25, 2008 19:42
Vote:
 
Nu fungerar det! Tack så mycket för hjälpen! Mvh Henrik Vaks
#17873
Mar 25, 2008 19:42
Vote:
 
Hei. Burde ikke dette være tilgjengelig per design i EPiServer, iallfall for flere brukere enn kun de som har Admin-rettigheter. Alternativt at det blir laget grensesnitt for tilgangskontroll til disse verktøy-knappene på samme måte som de andre funksjonene en kan styre tilgang på (Admin mode -> Permissions for functions). Frank :)
#17874
Mar 25, 2008 19:42
Vote:
 
Det är en god idé, har lagt in det som önskemål. Vi får titta närmare på det i en framtida version och se vad vi kan göra.
#17875
Mar 25, 2008 19:42
Vote:
 

How should I do the exact same thing in EPiServer 6 R2 ?

/John

#61817
Oct 02, 2012 16:28
Vote:
 

"Det är en god idé, har lagt in det som önskemål. Vi får titta närmare på det i en framtida version och se vad vi kan göra."

Vad hände? Vilken framtida version gäller det?

And as John asks, is it possible to do in 6 R2??

#62399
Oct 24, 2012 9:08
Vote:
 

I have done it. My solution is no better than the one for episerver 4 althought it doesnt quite work to do exactly the same. I used this post: http://www.markeverard.com/blog/2010/08/12/editor-access-to-episerver-admin-functionality/ but ran into a problem with the icon for dynamic properties always being grayed out dispite setting it to "publishers". This was enough in EPiServer 4 but not anymore - unless I missed something. Either way I got to to work by copying the icon code and duplicating it. Then I used javascript to show or hide the icons depending which permissions the user has. It works perfectly except you start to get errors about tampering... so to solve that i added httpcookie as described in this post: http://world.episerver.com/Modules/Forum/Pages/thread.aspx?id=59034.

problem solved. and yes, where is episervers solution? which should be far simpler than this!

I do question the need to allow publishers access to this feature but in my customers case it was necessary as the user(s) who needed access to the dynamic property are support personell who are not regular editors. They also needed to set the dynamic property on different places in the site for different reasons. It has been done this way for many years and it worked perfectly well - I think EPiServer just forgot.

#62449
Oct 24, 2012 19:12
Vote:
 

I guess that it wouldn't be so much work to do your own dynamic property manager pagetype. But such a solutionen shouldnt be necessary.

/Per

 

 

#62453
Oct 25, 2012 9:25
Vote:
 

Just for clarification:

This is the code that EPiServer provides:

		<EPiServerUI:ToolButton runat="server" ID="DynPropCommandTool" GeneratesPostBack="false" RequiredAccess="Publish" SkinID="Property" ToolTip="<%$ Resources: EPiServer, edit.editcommand.editdynprophelp %>" />
        <EPiServerScript:ScriptCommandEvent ID="ScriptCommandEvent4" runat="server" CommandTypeName="DynamicProperties" EventType="Click" NavigateUrl="EditDynProp.aspx" EventTargetID="DynPropCommandTool" />

and changing requiredAccess to publish didnt seem to be enough (it was for episerver 4).

So I added another button:

<EPiServerUI:ToolButton runat="server" ID="DynPropCommandTool2" GeneratesPostBack="false" RequiredAccess="Publish" SkinID="Property" ToolTip="<%$ Resources: EPiServer, edit.editcommand.editdynprophelp %>" />
        <EPiServerScript:ScriptCommandEvent ID="ScriptCommandEvent4b" runat="server" CommandTypeName="DynamicProperties" EventType="Click" NavigateUrl="EditDynProp.aspx" EventTargetID="DynPropCommandTool2" />

and some script: 

$(function(){
	var mypublishaccess = "<%= CurrentPage.ACL.QueryDistinctAccess(EPiServer.Security.AccessLevel.Publish) %>";
	var myadminaccess = "<%= CurrentPage.ACL.QueryDistinctAccess(EPiServer.Security.AccessLevel.Administer) %>";
	
	if (mypublishaccess == "True" && myadminaccess == "False")
	{
		$('#ctl00_FullRegion_Commands_DynPropCommandTool').parent().hide();
		$('#ctl00_FullRegion_Commands_DynPropCommandTool2').show();
	}
	else
	{
		$('#ctl00_FullRegion_Commands_DynPropCommandTool').show();
		$('#ctl00_FullRegion_Commands_DynPropCommandTool2').parent().hide();
	}
	});

its bizzare but it works.

 
#62480
Edited, Oct 25, 2012 15:47
This topic was created over six months ago and has been resolved. If you have a similar question, please create a new topic and refer to this one.