Rechteverwaltung: Content -> Template wechseln

Gesperrt
swelpot
Beiträge: 101
Registriert: Mo 26. Jul 2004, 20:42
Wohnort: Rhein-Main
Kontaktdaten:

Rechteverwaltung: Content -> Template wechseln

Beitrag von swelpot » Mi 28. Dez 2005, 11:11

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 ;-)
Grüße

Stefan

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Fr 30. Dez 2005, 09:38

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...
*** make your own tools (wishlist :: thx)

swelpot
Beiträge: 101
Registriert: Mo 26. Jul 2004, 20:42
Wohnort: Rhein-Main
Kontaktdaten:

Beitrag von swelpot » Fr 30. Dez 2005, 10:35

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.
Grüße

Stefan

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Fr 30. Dez 2005, 12:27

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
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Fr 30. Dez 2005, 12:41

ä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...
*** make your own tools (wishlist :: thx)

swelpot
Beiträge: 101
Registriert: Mo 26. Jul 2004, 20:42
Wohnort: Rhein-Main
Kontaktdaten:

Beitrag von swelpot » Fr 30. Dez 2005, 12:44

ich stimme euch zu ;-)
Grüße

Stefan

Stefan_Br
Beiträge: 36
Registriert: Di 29. Nov 2005, 18:06
Kontaktdaten:

kompletter Bugfix

Beitrag von Stefan_Br » Di 15. Aug 2006, 16:09

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 {

Gesperrt