MarkusR hat geschrieben:
Weiterhin kann ein Redakteur, der kein Recht hat, einen Artikel zu erstellen, dennoch einen Artikel kopieren, dann bearbeiten und speichern... und somit einen Artikel anlegen. Das sollte nicht so sein!
Dann kann ein Redakteur, der kein Recht für den Upload besitzt, dennoch Dateien hochladen, wenn auch nur für alle Rubriken. Dann kann er es aber zur Bearbeitung aufrufen und der Rubrik zuweisen. Er kann es dann zwar nicht mehr in der Liste sehen, aber nun ist es in der Rubrik verfügbar.
Upload, Löschen und Verschieben sollten ihm ohne Rechte für einen Upload nicht möglich sein!
Ich habe jetzt folgendes angepasst, um bei fehlenden Rechten Artikeloperationen (Copy, Move, Delete) und jeglichen Dateiupload zu unterbinden.
In _include/basic_navigation.inc.php
Code: Alles auswählen
$GLOBALS['navigation']['Files'][] = array(
'caption'=>'upload files',
'url'=>BASE_REL.'_admin/upload_files.php'
);
$GLOBALS['navigation']['Files'][] = array(
'caption'=>'work on images',
'url'=>BASE_REL.'_admin/manage_images.php'
);
$GLOBALS['navigation']['Files'][] = array(
'caption'=>'work on files',
'url'=>BASE_REL.'_admin/manage_files.php'
);
ändern zu
Code: Alles auswählen
if ($_SESSION['SID_stufe3'] || $_SESSION['SID_user']['admin']>ROLE_EDITOR) {
$GLOBALS['navigation']['Files'][] = array(
'caption'=>'upload files',
'url'=>BASE_REL.'_admin/upload_files.php'
);
$GLOBALS['navigation']['Files'][] = array(
'caption'=>'work on images',
'url'=>BASE_REL.'_admin/manage_images.php'
);
$GLOBALS['navigation']['Files'][] = array(
'caption'=>'work on files',
'url'=>BASE_REL.'_admin/manage_files.php'
);
}
und in _admin/articles.php
Code: Alles auswählen
// copy
printIcon(
BASE_REL.'_admin/articles.php?action=articles_copy&nr='.$db->v('nr'),
SKIN_URL.'pic_copy.gif',
__('copy article'),
true
);
// move
if ($article_block) {
printIcon(
BASE_REL.'_admin/articles.php?action=articles_move&nr='.$db->v('nr'),
SKIN_URL.'pic_move.gif',
sprintf(__('Article is being edited by %s.'), htmlspecialchars($db_2->v('name'))),
false
);
} else {
// Allowed to access different rubric?
$query = "SELECT COUNT(*) FROM ".CPO_PERMISSION." "
."WHERE user_id=".$_SESSION['SID_user']['id']." "
."AND stufe1=1 "
."AND rubric_id!='".addslashes($_SESSION['SID_rubric_id'])."'";
DEBUG(2, 'Is the user allowed to access a different rubric?<br /><br />'.$query, __FILE__, __LINE__);
$db_2->query($query);
$db_2->next_record();
if ($db_2->v('COUNT(*)')>0) {
printIcon(
BASE_REL.'_admin/articles.php?action=articles_move&nr='.$db->v('nr'),
SKIN_URL.'pic_move.gif',
__('move article'),
true
);
} else {
printIcon(
BASE_REL.'_admin/articles.php?action=articles_move&nr='.$db->v('nr'),
SKIN_URL.'pic_move.gif',
__('You only have access to this rubric.'),
false
);
}
}
// delete article
if ($article_block) {
printIcon(
BASE_REL.'_admin/articles.php?action=articles_delete&nr='.$db->v('nr'),
SKIN_URL.'pic_del.gif',
sprintf(__('Article is being edited by %s.'), htmlspecialchars($db_2->v('name'))),
false
);
} else {
printIcon(
BASE_REL.'_admin/articles.php?action=articles_delete&nr='.$db->v('nr'),
SKIN_URL.'pic_del.gif',
__('delete article'),
true
);
}
ändern zu
Code: Alles auswählen
if ($_SESSION['SID_stufe1']==1 OR $_SESSION['SID_user']['admin']>ROLE_EDITOR) { // by MarkusR: no copy, move delete if no creation rights!
// copy
printIcon(
BASE_REL.'_admin/articles.php?action=articles_copy&nr='.$db->v('nr'),
SKIN_URL.'pic_copy.gif',
__('copy article'),
true
);
// move
if ($article_block) {
printIcon(
BASE_REL.'_admin/articles.php?action=articles_move&nr='.$db->v('nr'),
SKIN_URL.'pic_move.gif',
sprintf(__('Article is being edited by %s.'), htmlspecialchars($db_2->v('name'))),
false
);
} else {
// Allowed to access different rubric?
$query = "SELECT COUNT(*) FROM ".CPO_PERMISSION." "
."WHERE user_id=".$_SESSION['SID_user']['id']." "
."AND stufe1=1 "
."AND rubric_id!='".addslashes($_SESSION['SID_rubric_id'])."'";
DEBUG(2, 'Is the user allowed to access a different rubric?<br /><br />'.$query, __FILE__, __LINE__);
$db_2->query($query);
$db_2->next_record();
if ($db_2->v('COUNT(*)')>0) {
printIcon(
BASE_REL.'_admin/articles.php?action=articles_move&nr='.$db->v('nr'),
SKIN_URL.'pic_move.gif',
__('move article'),
true
);
} else {
printIcon(
BASE_REL.'_admin/articles.php?action=articles_move&nr='.$db->v('nr'),
SKIN_URL.'pic_move.gif',
__('You only have access to this rubric.'),
false
);
}
}
// delete article
if ($article_block) {
printIcon(
BASE_REL.'_admin/articles.php?action=articles_delete&nr='.$db->v('nr'),
SKIN_URL.'pic_del.gif',
sprintf(__('Article is being edited by %s.'), htmlspecialchars($db_2->v('name'))),
false
);
} else {
printIcon(
BASE_REL.'_admin/articles.php?action=articles_delete&nr='.$db->v('nr'),
SKIN_URL.'pic_del.gif',
__('delete article'),
true
);
}
}
Jetzt hat der Redakteur die Rechte, die eingestellt sind. In meinem Fall nur "Bearbeiten" (kein Erstellen, kein Upload, keine Freigabe)