Seite 1 von 1

Rechteverwaltung: Content -> Template wechseln

Verfasst: Mi 28. Dez 2005, 11:11
von swelpot
Hallo zusammen,

vielleicht ein Bug, vielleicht einfach auch nur eine falsche Erwartungshaltung ;-)

Zur Sache: Wenn über die Gruppenrechte folgendes erlaubt wird
Bild
Bereiche: nur Zugriff auf den Artikelbereich

Bild
Content: Template wechseln, keine Berechtigung zum Template bearbeiten


erwarte ich, dass ein entsprechend zugeordneter Benutzer das Template eines zugänglichen Artikels wechseln kann, das Template selbst aber jedoch nicht konfigurieren kann.
Weiterhin sollte er nicht die Templatekonfiguration der Kategorie verändern dürfen.
Das ist/war in meiner Installation v4.6.4 ohne Beispielmandant nicht möglich, da das entsprechende Symbol zur Artikel-Templatekonfiguration in den Aktionen zum Artikel fehlt.
Bild




Als Workaround habe ich dazu folgendes eingebaut:
Zum Einblenden des Templatesymbols in der Artikelübersicht
Bild
contenido/includes/include.con_art_overview.php
Zeile 613, statt nur die Permissions zum Template bearbeiten abzufragen

Code: Alles auswählen

# Template conf button
if ($perm->have_perm_area_action("con","con_tplcfg_edit") ||
    $perm->have_perm_area_action_item("con","con_tplcfg_edit",$idcat)
    )
{
werden jetzt auch die Rechte zum Template wechseln geprüft

Code: Alles auswählen

# Template conf button
if ($perm->have_perm_area_action("con","con_tplcfg_edit") ||
    $perm->have_perm_area_action_item("con","con_tplcfg_edit",$idcat) ||
    $perm->have_perm_area_action("con", "con_changetemplate") ||
    $perm->have_perm_area_action_item("con", "con_changetemplate", $idcat)
    )
{


In der Templatekonfiguration selbst:
contenido/includes/include.tplcfg_edit_form.php
Zeile 88, statt

Code: Alles auswählen

if ($perm->have_perm_area_action("con","con_tplcfg_edit") ||
    $perm->have_perm_area_action_item("con","con_tplcfg_edit",$idcat)
) {
auch hier wieder die entsprechenden Berechtigungen ergänzen

Code: Alles auswählen

if ($perm->have_perm_area_action("con","con_tplcfg_edit") ||
    $perm->have_perm_area_action_item("con","con_tplcfg_edit",$idcat) ||
    $perm->have_perm_area_action("con", "con_changetemplate") ||
    $perm->have_perm_area_action_item("con", "con_changetemplate", $idcat)
) {
Da mit diesen Änderungen auch die Konfiguration des Templates möglich wäre, habe ich alle Einstellmöglichkeiten der Modulinputs deaktiviert
Bild
unter Zeile 428

Code: Alles auswählen

$modulecode = ob_get_contents();
ob_end_clean();
dies einfügen

Code: Alles auswählen

//wenn keine Berechtigung zum Template bearbeiten vorhanden ist
//werden die Eingabemöglichkeiten deaktiviert
if (!$perm->have_perm_area_action("con","con_tplcfg_edit") &&
    !$perm->have_perm_area_action_item("con","con_tplcfg_edit",$idcat))
{
  $modulecode = preg_replace('/\<(input|select|textarea)/i', '<\\1 disabled="disabled" ', $modulecode);
}
Der Cancelbutton wird dann auch noch mangels Funktion rausgeschmissen
Zeile 505, statt

Code: Alles auswählen

if ($idart)
{
	$buttons = '<a accesskey="c" href="'.$sess->url("main.php?area=con&frame=4&idcat=$idcat").'"><img src="images/but_cancel.gif" border="0"></a>&nbsp;&nbsp;&nbsp;&nbsp;
            	<input accesskey="s" type="image" src="images/but_ok.gif">';
} else {
	$buttons = '<a accesskey="c" href="'.$sess->url("main.php?area=str&frame=4&idcat=$idcat").'"><img src="images/but_cancel.gif" border="0"></a>&nbsp;&nbsp;&nbsp;&nbsp;
            	<input accesskey="s" type="image" src="images/but_ok.gif">';
}
dies hier

Code: Alles auswählen

if ($idart)
{
  $buttons = "";
  
  if ($perm->have_perm_area_action("con","con_tplcfg_edit") &&
      $perm->have_perm_area_action_item("con","con_tplcfg_edit",$idcat))
  {
    $buttons = '<a accesskey="c" href="'.$sess->url("main.php?area=con&frame=4&idcat=$idcat").'"><img src="images/but_cancel.gif" border="0"></a>&nbsp;&nbsp;&nbsp;&nbsp;';
  }
  $buttons = $buttons . '<input accesskey="s" type="image" src="images/but_ok.gif">';
} else {
  if ($perm->have_perm_area_action("con","con_tplcfg_edit") &&
      $perm->have_perm_area_action_item("con","con_tplcfg_edit",$idcat))
  {
    $buttons = '<a accesskey="c" href="'.$sess->url("main.php?area=str&frame=4&idcat=$idcat").'"><img src="images/but_cancel.gif" border="0"></a>&nbsp;&nbsp;&nbsp;&nbsp;';
  }
  $buttons = $buttons . '<input accesskey="s" type="image" src="images/but_ok.gif">';
}


Die geänderten beiden Dateien habe ich nochmal gezippt bereitgestellt. Download


Gutes Gelingen ;-)

Verfasst: Fr 30. Dez 2005, 09:38
von emergence
hmm...

ich hab mir das jetzt ein wenig angesehen...
bis zum ersten teil

also bis
unter Zeile 428
bin ich deiner meinung dass dies ein bug ist...

die anschließende änderung (nur deaktivierung der form elemente find ich aber nicht so gut...)

in dem file gibts sowieso noch ein paar etwas seltsame code konstruktionen...

ich verschieb das mal...

Verfasst: Fr 30. Dez 2005, 10:35
von swelpot
emergence hat geschrieben: also bis
unter Zeile 428
bin ich deiner meinung dass dies ein bug ist...
o.k.
emergence hat geschrieben: die anschließende änderung (nur deaktivierung der form elemente find ich aber nicht so gut...)
war für mich erstmal ein workaround. nur die templateauswahl anzuzeigen und die konfiguration weg zu lassen fand ich nicht so schön. andere möglichkeit wäre vielleicht die voreinstellungen als normalen text anzuzeigen. ist aber sicherlich wesentlich mehr aufwand.

Verfasst: Fr 30. Dez 2005, 12:27
von HerrB
die anschließende änderung (nur deaktivierung der form elemente find ich aber nicht so gut...)
Gegen die Anzeige spricht IMHO nichts. Aber man sollte auch das Speichern (im Code) abschalten, wenn man nicht das Recht dazu hat (es wäre sonst möglich, durch geeignete Manipulationen die Konfiguration doch zu ändern). Ich denke, das meint emergence.

Gruß
HerrB

Verfasst: Fr 30. Dez 2005, 12:41
von emergence
ähm sogar gegen die anzeige spricht was,
da der input code evaluiert wird... ein ausblenden alleine kann somit dennoch zu einer konfigurations änderung führen...

ein schneller bugfix ohne gründlich darüber nachzudenken(tja und das kostet zeit) bringt es für den zweiten teil somit nicht...

Verfasst: Fr 30. Dez 2005, 12:44
von swelpot
ich stimme euch zu ;-)

kompletter Bugfix

Verfasst: Di 15. Aug 2006, 16:09
von Stefan_Br
So, hier ein kompletter Bugfix:

1.
Wie zuvor bei swelpot für den Button sorgen:

in contenido/includes/include.con_art_overview.php
Zeile 613, statt nur die Permissions zum Templatebearbeiten abzufragen

Code: Alles auswählen

# Template conf button 
if ($perm->have_perm_area_action("con","con_tplcfg_edit") || 
    $perm->have_perm_area_action_item("con","con_tplcfg_edit",$idcat) 
    ) 
{ 
werden jetzt auch die Rechte zum Template wechseln geprüft Code:

Code: Alles auswählen

# Template conf button 
if ($perm->have_perm_area_action("con","con_tplcfg_edit") || 
    $perm->have_perm_area_action_item("con","con_tplcfg_edit",$idcat) || 
    $perm->have_perm_area_action("con", "con_changetemplate") || 
    $perm->have_perm_area_action_item("con", "con_changetemplate", $idcat) 
    ) 
{ 
2.
Folgende Änderungen in contenido/includes/include.tplcfg_edit_form.php:
Aus

Code: Alles auswählen

if ( $idart ) {
	if ($perm->have_perm_area_action("con","con_tplcfg_edit") || 
    $perm->have_perm_area_action_item("con","con_tplcfg_edit",$idcat))
    {
wird

Code: Alles auswählen

if ( $idart ) {
	if ($perm->have_perm_area_action("con","con_tplcfg_edit") || 
    $perm->have_perm_area_action_item("con","con_tplcfg_edit",$idcat) || 
    $perm->have_perm_area_action("con", "con_changetemplate") || 
    $perm->have_perm_area_action_item("con", "con_changetemplate", $idcat))
    {

Und aus

Code: Alles auswählen

if (isset($a_d) && is_array($a_d)) {

    foreach ($a_d as $cnumber=>$value) {
wird

Code: Alles auswählen

if (isset($a_d) && is_array($a_d) && ($perm->have_perm_area_action("con","con_tplcfg_edit") || 
    $perm->have_perm_area_action_item("con","con_tplcfg_edit",$idcat))) {

    foreach ($a_d as $cnumber=>$value) {
Zuletzt wird aus

Code: Alles auswählen

if ( $idtpl != 0 && $inUse == false) {
    $tpl->set('s', 'BUTTONS', $buttons);
} else {
dies

Code: Alles auswählen

if ( $idtpl != 0 && $inUse == false && ($perm->have_perm_area_action("con","con_tplcfg_edit") || 
    $perm->have_perm_area_action_item("con","con_tplcfg_edit",$idcat))) {
    $tpl->set('s', 'BUTTONS', $buttons);
} else {