Gruppe einrichten, welche Templates bearbeiten kann
Ich habe dem user über ein Gruppe alle Rechte in area gegeben. Ich werde das ganze noch mal auf Linux mit einer anderen Contenido Version testen. Allerdings nicht mehr heute abend, denn das erste Bier hat bereits gut geschmeckt und es werden weiter folgen. Ich werde morgen mal weiter testen und schauen ob ich diesem Fehler auf anderen Systemen reproduzieren kann.
ach ja gefunden...
ist eigentlich ein fehler im
include.tpl.overview.php
da steht nur
es wird nur deziert darauf geprüft ob ein recht auf irgendein item gesetzt ist...
und leider nicht ob das recht unter bereiche vorhanden ist...
eigentlich sollte der code so aussehen (4.4.4)
für die 4.4.4
für die 4.5.x
ob
$perm->have_perm_area_action("tpl_edit" , "tpl_new")
wirklich gebraucht wird ist ne andere sache... wenn er das globale recht hat ein template zu erstellen würde er auch alle templates sehen...
ist eigentlich ein fehler im
include.tpl.overview.php
da steht nur
Code: Alles auswählen
if ( $perm->have_perm_item($area, $db->f("idtpl")) ) { //idarea of area tpl is 12
und leider nicht ob das recht unter bereiche vorhanden ist...
eigentlich sollte der code so aussehen (4.4.4)
für die 4.4.4
Code: Alles auswählen
if ( $perm->have_perm_item($area, $db->f("idtpl")) ||
$perm->have_perm_area_action("tpl" , "tpl_delete") ||
$perm->have_perm_area_action("tpl" , "tpl_duplicate") ||
$perm->have_perm_area_action("tpl_edit" , "tpl_edit") ||
$perm->have_perm_area_action("tpl_edit" , "tpl_new")
) {
Code: Alles auswählen
if ( $perm->have_perm_item($area, $db->f("idtpl")) ||
$perm->have_perm_area_action("tpl" , "tpl_delete") ||
$perm->have_perm_area_action("tpl" , "tpl_duplicate") ||
$perm->have_perm_area_action("tpl_edit" , "tpl_edit") ||
$perm->have_perm_area_action("tpl_edit" , "tpl_new") ||
$perm->have_perm_area_action("tpl_visual" , "tpl_visedit")
) {
$perm->have_perm_area_action("tpl_edit" , "tpl_new")
wirklich gebraucht wird ist ne andere sache... wenn er das globale recht hat ein template zu erstellen würde er auch alle templates sehen...
*** make your own tools (wishlist :: thx)
ähm da hab ich noch einen wirklich geilen fehler gefunden...
classes/class.backend.php
das intressante ist nun das immer $idcat gefragt ist...
die $idtpl etc fallen da durch den rost...
im endeffekt ist es nun so das wenn der user ein recht direkt beim item hat und sonst nirgends die action nicht ausgeführt wird...
nun gut bei der function select einfach nach der global definition folgendes ergänzen:
und etwas weiter unten
ersetzen durch
damit hat man nun die möglichkeit zu definieren welche werte berücksichtigt werden sollen....
das ist natürlich keine saubere lösung, aber was besseres fällt mir momentan nicht ein...
classes/class.backend.php
Code: Alles auswählen
if ($perm->have_perm_area_action_item($area, $db->f("name"), $idcat) || $perm->have_perm_area_action($area, $db->f("name"))) {
$this->actions[$area][$db->f('name')] = $db->f('code');
}
die $idtpl etc fallen da durch den rost...
im endeffekt ist es nun so das wenn der user ein recht direkt beim item hat und sonst nirgends die action nicht ausgeführt wird...
nun gut bei der function select einfach nach der global definition folgendes ergänzen:
Code: Alles auswählen
global $idcat, $idtpl, $idmod, $idlay;
if (isset($idcat)) {
$itemid = $idcat;
} elseif (isset($idtpl)) {
$itemid = $idtpl;
} elseif (isset($idmod)) {
$itemid = $idmod;
} elseif (isset($idlay)) {
$itemid = $idlay;
} else {
$itemid = 0;
}
Code: Alles auswählen
if ($perm->have_perm_area_action_item($area, $db->f("name"), $idcat) || $perm->have_perm_area_action($area, $db->f("name"))) {
Code: Alles auswählen
if ($perm->have_perm_area_action_item($area, $db->f("name"), $itemid) || $perm->have_perm_area_action($area, $db->f("name"))) {
das ist natürlich keine saubere lösung, aber was besseres fällt mir momentan nicht ein...
*** make your own tools (wishlist :: thx)
ach ja sollte auch gleich mit berücksichtigt werden...
-> http://contenido.de/forum/viewtopic.php ... light=perm
-> http://contenido.de/forum/viewtopic.php ... light=perm
*** make your own tools (wishlist :: thx)
rights.inc.php und grouprights.inc.php
die erklärung am anfang wie der array aussieht ist falsch...
wäre an sich...
die funktion saverights() hab ich etwas umgebaut... und vereinfacht...
für rights.inc.php
für grouprights.inc.php
die erklärung am anfang wie der array aussieht ist falsch...
wäre an sich...
Code: Alles auswählen
/* the right_list array:
[client] => Array => parent area
(
[client] => Array => area name
(
[perm] => client => areaname = permission
[location] => navigation/administration/clients => location for the name in the languagefile only for the main areaid
[action] => Array
(
[0] => client_delete => actionnames
)
)
[client_edit] => Array => area name
(
[perm] => client_edit
[location] =>
[action] => Array
(
[0] => client_edit
[1] => client_new
)
)
)
*/
für rights.inc.php
Code: Alles auswählen
function saverights() {
global $rights_list, $rights_list_old, $db;
global $cfg, $userid, $rights_client, $rights_lang;
global $perm, $sess, $notification;
//if no checkbox is checked
if (!is_array($rights_list)) {
$rights_list = array ();
}
/*
echo "<pre>old:";
print_r($rights_list_old);
echo "new:";
print_r($rights_list);
echo "</pre>";
*/
//search all checks which are not in the new Rights_list for deleting
$arraydel = array_diff(array_keys($rights_list_old), array_keys($rights_list));
//search all checks which are not in the Rights_list_old for saving
$arraysave = array_diff(array_keys($rights_list), array_keys($rights_list_old));
if (is_array($arraydel)) {
foreach ($arraydel as $value) {
$data = explode("|", $value);
$data[0] = $perm->getIDForArea($data[0]);
$data[1] = $perm->getIDForAction($data[1]);
$sql = "DELETE FROM ".$cfg["tab"]["rights"]." WHERE user_id='$userid' AND idclient='$rights_client' AND idlang='$rights_lang' AND idarea='$data[0]' AND idcat='$data[2]' AND idaction='$data[1]' AND type=0";
$db->query($sql);
//echo $sql."<br>";
}
}
unset($data);
//search for all mentioned checkboxes
if (is_array($arraysave)) {
foreach ($arraysave as $value) {
//explodes the key it consits areait+actionid+itemid
$data = explode("|", $value);
// Since areas are stored in a numeric form in the rights table, we have
// to convert them from strings into numbers
$data[0] = $perm->getIDForArea($data[0]);
$data[1] = $perm->getIDForAction($data[1]);
if (!isset ($data[1])) {
$data[1] = 0;
}
// Insert new right
$sql = "INSERT INTO ".$cfg["tab"]["rights"]."
(idright, user_id,idarea,idaction,idcat,idclient,idlang,type)
VALUES ('".$db->nextid($cfg["tab"]["rights"])."', '$userid','$data[0]','$data[1]','$data[2]','$rights_client','$rights_lang',0)";
$db->query($sql);
//echo $sql."<br>";
}
}
$rights_list_old = $rights_list;
$notification->displayNotification("info", i18n("Changes saved"));
}
Code: Alles auswählen
function saverights() {
global $rights_list, $rights_list_old, $db;
global $cfg, $groupid, $rights_client, $rights_lang;
global $perm, $sess, $notification;
//if no checkbox is checked
if (!is_array($rights_list)) {
$rights_list = array ();
}
/*
echo "<pre>old:";
print_r($rights_list_old);
echo "new:";
print_r($rights_list);
echo "</pre>";
*/
//search all checks which are not in the new Rights_list for deleting
$arraydel = array_diff(array_keys($rights_list_old), array_keys($rights_list));
//search all checks which are not in the Rights_list_old for saving
$arraysave = array_diff(array_keys($rights_list), array_keys($rights_list_old));
if (is_array($arraydel)) {
foreach ($arraydel as $value) {
$data = explode("|", $value);
$data[0] = $perm->getIDForArea($data[0]);
$data[1] = $perm->getIDForAction($data[1]);
$sql = "DELETE FROM ".$cfg["tab"]["rights"]." WHERE user_id='$groupid' AND idclient='$rights_client' AND idlang='$rights_lang' AND idarea='$data[0]' AND idcat='$data[2]' AND idaction='$data[1]' AND type=1";
$db->query($sql);
//echo $sql."<br>";
}
}
unset($data);
//search for all mentioned checkboxes
if (is_array($arraysave)) {
foreach ($arraysave as $value) {
//explodes the key it consits areait+actionid+itemid
$data = explode("|", $value);
// Since areas are stored in a numeric form in the rights table, we have
// to convert them from strings into numbers
$data[0] = $perm->getIDForArea($data[0]);
$data[1] = $perm->getIDForAction($data[1]);
if (!isset ($data[1])) {
$data[1] = 0;
}
// Insert new right
$sql = "INSERT INTO ".$cfg["tab"]["rights"]."
(idright, user_id,idarea,idaction,idcat,idclient,idlang, type)
VALUES ('".$db->nextid($cfg["tab"]["rights"])."', '$groupid','$data[0]','$data[1]','$data[2]','$rights_client','$rights_lang',1)";
$db->query($sql);
//echo $sql."<br>";
}
}
$rights_list_old = $rights_list;
$notification->displayNotification("info", i18n("Changes saved"));
}
*** make your own tools (wishlist :: thx)
und nun zu letzten teil:
das mit $rights_list_old das manchmal rechte gespeichert werden und manchmal nicht...
rights.area.inc.php
vor
folgendes setzen...
der untere teil
komplett raus...
die änderungen in der grouprights.area.inc.php sind ident... bis auf
das query: muss
sein
das mit $rights_list_old das manchmal rechte gespeichert werden und manchmal nicht...
rights.area.inc.php
vor
Code: Alles auswählen
if (($perm->have_perm_area_action($area, $action)) && ($action == "user_edit")) {
saverights();
} else {
if (!$perm->have_perm_area_action($area, $action)) {
$notification->displayNotification("error", i18n("Permission denied"));
}
}
Code: Alles auswählen
//set the areas which are in use fore selecting these
$sql = "SELECT A.idarea, A.idaction, A.idcat, B.name, C.name FROM ".$cfg["tab"]["rights"]." AS A, ".$cfg["tab"]["area"]." AS B, ".$cfg["tab"]["actions"]." AS C WHERE user_id='$userid' AND idclient='$rights_client' AND idlang='$rights_lang' AND idcat='0' AND A.idaction = C.idaction AND A.idarea = B.idarea";
$db->query($sql);
$rights_list_old = array ();
while ($db->next_record()) { //set a new rights list fore this user
$rights_list_old[$db->f(3)."|".$db->f(4)."|".$db->f("idcat")] = "x";
}
Code: Alles auswählen
//If rights_list is not set or you browse from a other site make a new rights_list from this user
if(!isset($rights_list_old)||$action==""||!isset($action)){
...
}
die änderungen in der grouprights.area.inc.php sind ident... bis auf
das query:
Code: Alles auswählen
user_id='$userid'
Code: Alles auswählen
user_id='$groupid'
Zuletzt geändert von emergence am So 28. Nov 2004, 10:50, insgesamt 1-mal geändert.
*** make your own tools (wishlist :: thx)
das mit $rights_old_list bei den anderen dateien...
rights_tpl.inc.php
rights_con.inc.php
rights_lay.inc.php
rights_mod.inc.php
rights_str.inc.php
am beginn
für tpl
bei con, lay, mod, str
showareas("tpl") anpassen...
der teil mit
fliegt jedesmal raus...
der unterschied bei den grouprights_*.inc.php liegt einfach nur darin das im query
geändert werden muss auf
und
muss auf
geändert werden...
rights_tpl.inc.php
rights_con.inc.php
rights_lay.inc.php
rights_mod.inc.php
rights_str.inc.php
am beginn
für tpl
Code: Alles auswählen
//set the areas which are in use fore selecting these
$possible_area = "'".implode("','", $area_tree[showareas("tpl")])."'";
$sql = "SELECT A.idarea, A.idaction, A.idcat, B.name, C.name FROM ".$cfg["tab"]["rights"]." AS A, ".$cfg["tab"]["area"]." AS B, ".$cfg["tab"]["actions"]." AS C WHERE user_id='$userid' AND idclient='$rights_client' AND A.type = 0 AND idlang='$rights_lang' AND B.idarea IN ($possible_area) AND idcat!='0' AND A.idaction = C.idaction AND A.idarea = C.idarea AND A.idarea = B.idarea";
$db->query($sql);
$rights_list_old = array ();
while ($db->next_record()) { //set a new rights list fore this user
$rights_list_old[$db->f(3)."|".$db->f(4)."|".$db->f("idcat")] = "x";
}
showareas("tpl") anpassen...
der teil mit
Code: Alles auswählen
//If rights_list is not set or you browse from a other site make a new rights_list from this user
if(!isset($rights_list_old)||$action==""||!isset($action)){
...
}
der unterschied bei den grouprights_*.inc.php liegt einfach nur darin das im query
Code: Alles auswählen
user_id='$userid'
Code: Alles auswählen
user_id='$groupid'
Code: Alles auswählen
A.type = 0
Code: Alles auswählen
A.type = 1
*** make your own tools (wishlist :: thx)
jetzt hab ich mittlerweile das ganze rechtesystem verstanden...
zum debuggen ist es wirklich ne katastrophe..
ein paar anmerkungen mal allgemein dazu...
die idee die dahintersteht ist ja nicht schlecht...
sämtliche rechte die gesetzt wurden, werden via ja
$perm->load_permissions();
initialisiert... (conlib/perm.inc)
dabei werden zwei arrays generiert
einmal
$area_rights
und
$item_rights
zusätzlich gibts die nette datei classes/class.backend.php
die nun dafür verantwortlich ist das die actions ausgeführt werden falls der benutzer ein recht darauf hat...
in der class.backend gibts ja die debug funktion die ja recht auskunftsfreudig ist, aber beim debuggen der berechtigungen nicht sonderlich hilfreich ist, da nicht angezeigt wird ob das in action gespeicherte recht nun wirklich ausgeführt ist...
ich hab mir dazu folgendes in der main.php zum debuggen dazugebaut...
ersetzen durch
beim aufräumen ist mir da ein nettes problem aufgefallen...
sagen wir mal der benutzer hat das recht auf den bereich template
und bei einem template selbst das recht ein template zu erstellen...
sollte man annehmen das dies funktionieren sollte... (tuts aber nicht..)
es gibt in der klasse perm keine möglichkeit herzuleiten ob bei einem x-beliebigen element ein recht gesetzt ist und die aktion dann zu erlauben...
ich hab mir jetzt in der perm.inc noch folgendes eingebaut
damit funktioniert das nämlich...
um jetzt auf das beispiel mit tpl zurückzukommen...
bei include.tpl_edit_form.php
sollte die erste zeile wie folgt aussehen... ***
ansonsten kommt nämlich permission denied...
weiters in functions.tpl.php
bei function tplEditTemplate
stollte am schluss
stehen...
sonst hebelt das den backend debug modus aus... da header nicht ausgeführt wird und $idtpl in dem fall leer wäre...
und nun zum wirklich intressanten teil in der class.backend.php
es ist zwingend erforderlich das die rechte beim erstellen eines neuen elements hergeleitet werden...
man sollte annehmen das die via tpl_new, mod_new, lay_new gemacht werden sollte...
dem ist aber nicht so...
sollte ersetzt werden durch
***
ident zu setzen bei include.mod_edit_form.php, include.lay_edit_form.php
ich schätze mal das der einbau in den snapshot für alle änderungen ca. 2 stunden mit tests in anspruch nehmen wird...
wie auch immer:
bei der gestaltung eines neuen rechte systems müsste man wirklich alles umbauen... ich hab mir gedacht solange ich das alte nicht ganz verstanden hab bringts das nicht wirklich...
hauptproblem ist natürlich das herleiten von rechten bei den einzelnen items... wie man das wirklich elegant machen könnte ?? keine ahnung
denke aber nicht das es via generic db einfacher aufbaubar wäre...
ad. windows rechte system
gibts da irgendwo im netz ne info wie das aufgebaut ist ?
zum debuggen ist es wirklich ne katastrophe..
ein paar anmerkungen mal allgemein dazu...
die idee die dahintersteht ist ja nicht schlecht...
sämtliche rechte die gesetzt wurden, werden via ja
$perm->load_permissions();
initialisiert... (conlib/perm.inc)
dabei werden zwei arrays generiert
einmal
$area_rights
und
$item_rights
zusätzlich gibts die nette datei classes/class.backend.php
die nun dafür verantwortlich ist das die actions ausgeführt werden falls der benutzer ein recht darauf hat...
in der class.backend gibts ja die debug funktion die ja recht auskunftsfreudig ist, aber beim debuggen der berechtigungen nicht sonderlich hilfreich ist, da nicht angezeigt wird ob das in action gespeicherte recht nun wirklich ausgeführt ist...
ich hab mir dazu folgendes in der main.php zum debuggen dazugebaut...
Code: Alles auswählen
if (isset($action) && $backend->getCode($action) != '') {
eval($backend->getCode($action));
}
Code: Alles auswählen
if (isset($action)) {
if ($backend->getCode($action) != '') {
if ($backend->debug == 1) {
echo '<pre style="font-family: verdana; font-size: 10px"><b>Executing:</b>'."\n";
echo $backend->getCode($action)."\n";
echo '</pre>';
}
eval($backend->getCode($action));
} else {
if ($backend->debug == 1) {
echo '<pre style="font-family: verdana; font-size: 10px"><b>Executing:</b>'."\n";
echo "no code available in action\n";
echo '</pre>';
}
}
}
sagen wir mal der benutzer hat das recht auf den bereich template
und bei einem template selbst das recht ein template zu erstellen...
sollte man annehmen das dies funktionieren sollte... (tuts aber nicht..)
es gibt in der klasse perm keine möglichkeit herzuleiten ob bei einem x-beliebigen element ein recht gesetzt ist und die aktion dann zu erlauben...
ich hab mir jetzt in der perm.inc noch folgendes eingebaut
Code: Alles auswählen
function have_perm_area_action_anyitem($area, $action = 0) {
if ($this->have_perm_area_action($area,$action)) {
return true;
}
$area = $this->getIDForArea($area);
$action = $this->getIDForAction($action);
global $item_rights;
if (isset($item_rights[$area][$action])) {
return true;
} else {
return false;
}
}
um jetzt auf das beispiel mit tpl zurückzukommen...
bei include.tpl_edit_form.php
sollte die erste zeile wie folgt aussehen... ***
Code: Alles auswählen
if (($action == "tpl_new") && (!$perm->have_perm_area_action_anyitem($area, $action)))
weiters in functions.tpl.php
bei function tplEditTemplate
stollte am schluss
Code: Alles auswählen
//******** if layout is changed stay at 'tpl_edit' otherwise go to 'tpl'
if ($changelayout != 1) {
$url = $sess->url("main.php?area=tpl_edit&idtpl=$idtpl&frame=4");
header("location: $url");
}
return $idtpl;
sonst hebelt das den backend debug modus aus... da header nicht ausgeführt wird und $idtpl in dem fall leer wäre...
und nun zum wirklich intressanten teil in der class.backend.php
es ist zwingend erforderlich das die rechte beim erstellen eines neuen elements hergeleitet werden...
man sollte annehmen das die via tpl_new, mod_new, lay_new gemacht werden sollte...
dem ist aber nicht so...
Code: Alles auswählen
# Save the action only access to
# the desired action is granted.
# If this action is relevant for rights
# check if the user has permission to
# execute this action
if ($db->f("relevant_action") == 1 && $db->f("relevant_area") == 1) {
if ($perm->have_perm_area_action_item($area, $db->f("name"), $itemid) || $perm->have_perm_area_action($area, $db->f("name"))) {
$this->actions[$area][$db->f('name')] = $db->f('code');
}
} else {
$this->actions[$area][$db->f('name')] = $db->f('code');
}
Code: Alles auswählen
# Save the action only access to
# the desired action is granted.
# If this action is relevant for rights
# check if the user has permission to
# execute this action
if ($db->f("relevant_action") == 1 && $db->f("relevant_area") == 1) {
if ($perm->have_perm_area_action_item($area, $db->f("name"), $itemid) || $perm->have_perm_area_action($area, $db->f("name"))) {
$this->actions[$area][$db->f('name')] = $db->f('code');
}
if ($itemid == 0) {
// itemid not available, since its impossible the get the correct rights out
// we only check if userrights are given for these three items on any item
if ($action=="mod_edit" || $action=="tpl_edit" || $action=="lay_edit") {
if ($perm->have_perm_area_action_anyitem($area, $db->f("name"))) {
$this->actions[$area][$db->f('name')] = $db->f('code');
}
}
}
} else {
$this->actions[$area][$db->f('name')] = $db->f('code');
}
ident zu setzen bei include.mod_edit_form.php, include.lay_edit_form.php
ich schätze mal das der einbau in den snapshot für alle änderungen ca. 2 stunden mit tests in anspruch nehmen wird...
wie auch immer:
bei der gestaltung eines neuen rechte systems müsste man wirklich alles umbauen... ich hab mir gedacht solange ich das alte nicht ganz verstanden hab bringts das nicht wirklich...
hauptproblem ist natürlich das herleiten von rechten bei den einzelnen items... wie man das wirklich elegant machen könnte ?? keine ahnung
denke aber nicht das es via generic db einfacher aufbaubar wäre...
ad. windows rechte system
gibts da irgendwo im netz ne info wie das aufgebaut ist ?
Zuletzt geändert von emergence am Di 30. Nov 2004, 14:29, insgesamt 1-mal geändert.
*** make your own tools (wishlist :: thx)
-
- Beiträge: 6284
- Registriert: Do 15. Mai 2003, 18:32
- Wohnort: Da findet ihr mich nie!
- Kontaktdaten:
Keine Ahnung, aber so grob gesprochen funktioniert das so:emergence hat geschrieben:ad. windows rechte system
gibts da irgendwo im netz ne info wie das aufgebaut ist ?
Jedes "Objekt" (also Verzeichnis oder File) hat Berechtigungen (nicht nur lesen und schreiben, sondern auch "Spezialberechtigungen" sind möglich). Weiterhin ist es recht elegant gelöst:
Möchte man von einem Objekt wissen, welche Rechte es hat, dann macht man einen Rechtsklick drauf und sieht, welche Berechtigungen für das Objekt aktiv sind und welche eingestellt wurden. Weiterhin kann man entweder explizit zulassen oder sperren, egal, was das übergeordnete Objekt für Berechtigungen hat - alles auf Benutzer- oder Gruppenbasis.
hmm... das hört sich nach einem komplett anders aufgebauten cms an...timo hat geschrieben:Jedes "Objekt" (also Verzeichnis oder File) hat Berechtigungen (nicht nur lesen und schreiben, sondern auch "Spezialberechtigungen" sind möglich). Weiterhin ist es recht elegant gelöst:
Möchte man von einem Objekt wissen, welche Rechte es hat, dann macht man einen Rechtsklick drauf und sieht, welche Berechtigungen für das Objekt aktiv sind und welche eingestellt wurden. Weiterhin kann man entweder explizit zulassen oder sperren, egal, was das übergeordnete Objekt für Berechtigungen hat - alles auf Benutzer- oder Gruppenbasis.
nein scherz bei seite...
d.h. jedes objekt das angelegt wird bekommt einen grundstock an berechtigungen...
definiert über gruppen... zb sysadmin, admin
area definition + read, write, delete, modify
auf jedes objekt ? na hurra...
wenn es da mal die berechtigungstabelle zusammenlegt kann man sich die hand schütteln...
nimmt man das system wie im alten rechten system her als super user landet man fast wieder beim selben schlamassel...
ich kann mir das momentan noch nicht einfacher vorstellen... ich meine jetzt umsetzungstechnisch...
andere variation: die berechtigungen mit den funktionen zu koppeln...
aber ist auch immens kompliziert , da land ich beim action prinzip... egal...
aber eines ist klar, es muss ne vereinfachung vom system her...
gibt eigentlich schon mehr als die idee, dass es wie das windows berechtigungssystem funktionieren sollte ? eventuell den ansatz eines schriftlichen konzepts ? wenn nein sollten wir eines erstellen...
ich mach mal nen thread in development auf...
*** make your own tools (wishlist :: thx)
noch ne ergänzung für die class.backend.php
-> http://www.contenido.de/forum/viewtopic ... 8491#28491
-> http://www.contenido.de/forum/viewtopic ... 8491#28491
*** make your own tools (wishlist :: thx)
Ich hab auch noch mal ein bißchen rumgetestet. Totz diesem Fehler, den ich pro Template 1x im linken Fenster der Templatebearbeitung bekomme, funktioniert alles:
Warning: Invalid argument supplied for foreach() in /var/www/contenido-4.4.4/conlib/perm.inc on line 426
Ich hatte gestern ein sehr sehr komisches Verhalten entdeckt, kann es aber heute nicht reproduzieren. Melde mich wenn es noch mal auftaucht. Er hat mir nämlich alle Rechte der area gelöscht nachdem ich die Rechte für einzelne Templates gesetzt hatte. Aber wie gesagt, kann das Verhalten heute nicht mehr reproduzieren.
Warning: Invalid argument supplied for foreach() in /var/www/contenido-4.4.4/conlib/perm.inc on line 426
Ich hatte gestern ein sehr sehr komisches Verhalten entdeckt, kann es aber heute nicht reproduzieren. Melde mich wenn es noch mal auftaucht. Er hat mir nämlich alle Rechte der area gelöscht nachdem ich die Rechte für einzelne Templates gesetzt hatte. Aber wie gesagt, kann das Verhalten heute nicht mehr reproduzieren.
gut...makemyday hat geschrieben:Ich hab auch noch mal ein bißchen rumgetestet. Totz diesem Fehler, den ich pro Template 1x im linken Fenster der Templatebearbeitung bekomme, funktioniert alles:
Code: Alles auswählen
Warning: Invalid argument supplied for foreach() in /var/www/contenido-4.4.4/conlib/perm.inc on line 426
poste mal die klassen funktion die es betrifft...
*** make your own tools (wishlist :: thx)
Fehler tritt auf in Contenido_Perm:have_perm_item
und zwar ist das Array $area_tree['tpl'] leer obwohl ich dem User alle Template Rechte in der Area zugewiesen habe. Wo $area_tree zusammengaut wird konnte ich auf die schnelle nicht nachvollziehen.
Bevor Du Dir aber über diesem Fehler zu viele Gedanken machst sollten wir versuchen den Fehler auf einem anderen System zu reproduzieren. Der Fehler tritt bei mir bei einem "Nicht-Admin-User" auf, unabhängig davon, ob die Rechte über die Gruppe oder die Benutzerebene vergeben wurden.
und zwar ist das Array $area_tree['tpl'] leer obwohl ich dem User alle Template Rechte in der Area zugewiesen habe. Wo $area_tree zusammengaut wird konnte ich auf die schnelle nicht nachvollziehen.
Bevor Du Dir aber über diesem Fehler zu viele Gedanken machst sollten wir versuchen den Fehler auf einem anderen System zu reproduzieren. Der Fehler tritt bei mir bei einem "Nicht-Admin-User" auf, unabhängig davon, ob die Rechte über die Gruppe oder die Benutzerebene vergeben wurden.