feat(wiki): Betriebsrat-Berechtigung (r-wiki-br)
Neue Permission r-wiki-br ermöglicht eingeschränkte Wiki-Bearbeitung: - Neue Permission in main_permission (ID 30: r-wiki-br) - Neue Spalte betriebsrat_editable in knowledgecenter_categories_update - Checkbox "Für Betriebsrat bearbeitbar" in der Kategorie-Verwaltung (nur für r-wiki-Redakteure sichtbar und speicherbar) Berechtigungslogik: - r-wiki schlägt immer: Wer beide Rechte hat, verhält sich wie Redakteur - Betriebsrat sieht nur Kategorien mit betriebsrat_editable=1 - "Beitrag erstellen"-Button nur in freigegebenen Kategorien sichtbar - Neue Posts/Bearbeitungen auf betriebsrat_editable-Kategorien beschränkt - Settings-Tab und Kategorieverwaltung weiterhin r-wiki-only - Ajax-Endpoints (save_post_files, delete_post_file, upload_inline_image) prüfen Kategorie-Berechtigung serverseitig File Gallery: - Betriebsrat ist per kc_lock_path auf den Post-eigenen Ordner beschränkt - Redakteur kann frei navigieren (kein Lock) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -829,7 +829,6 @@ if (isset($_GET[$c_form]) && !empty($_POST)) {
|
||||
// Helper-Funktion zur Berechtigungsprüfung
|
||||
function require_permission($permissionCode)
|
||||
{
|
||||
// Hier nehmen wir an, dass $GLOBALS["main_contact"] korrekt gesetzt ist
|
||||
if (
|
||||
get_permission_state(
|
||||
$permissionCode,
|
||||
@@ -842,6 +841,32 @@ function require_permission($permissionCode)
|
||||
}
|
||||
}
|
||||
|
||||
// Prüft, ob der User voller Wiki-Redakteur ist (r-wiki)
|
||||
function is_wiki_redakteur(): bool
|
||||
{
|
||||
return get_permission_state('r-wiki', $GLOBALS['main_contact']['master_mandant_id'], $GLOBALS['main_contact']['id']) == 1;
|
||||
}
|
||||
|
||||
// Prüft, ob der User Betriebsrat-Wiki-Recht hat (r-wiki-br)
|
||||
function is_wiki_betriebsrat(): bool
|
||||
{
|
||||
return get_permission_state('r-wiki-br', $GLOBALS['main_contact']['master_mandant_id'], $GLOBALS['main_contact']['id']) == 1;
|
||||
}
|
||||
|
||||
// Prüft, ob der User irgendeins der Wiki-Bearbeitungsrechte hat
|
||||
function has_wiki_edit_permission(): bool
|
||||
{
|
||||
return is_wiki_redakteur() || is_wiki_betriebsrat();
|
||||
}
|
||||
|
||||
function require_wiki_edit_permission(): void
|
||||
{
|
||||
if (!has_wiki_edit_permission()) {
|
||||
echo "Sie haben nicht die notwendigen Berechtigungen, um diese Seite zu sehen.";
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
// Switch-Case für die verschiedenen Aktionen
|
||||
$action = $_GET["action"] ?? "List";
|
||||
switch ($action) {
|
||||
@@ -850,6 +875,7 @@ switch ($action) {
|
||||
require_once(__DIR__ . '/../Installation/Installation.php');
|
||||
break;
|
||||
case "Categories":
|
||||
// Kategorieverwaltung nur für vollständige Redakteure
|
||||
if (isset($_GET['detail'])) {
|
||||
require_permission('r-wiki');
|
||||
require_once(__DIR__ . '/../Views/categories_cardform.php');
|
||||
@@ -859,7 +885,8 @@ switch ($action) {
|
||||
}
|
||||
break;
|
||||
case "PostList":
|
||||
require_permission('r-wiki');
|
||||
// Betriebsrat darf die Post-Liste sehen (gefiltert auf seine Kategorien)
|
||||
require_wiki_edit_permission();
|
||||
require_once(__DIR__ . '/../Views/post_listform.php');
|
||||
break;
|
||||
case "Post":
|
||||
@@ -870,7 +897,8 @@ switch ($action) {
|
||||
require_once(__DIR__ . '/../Import/Import.php');
|
||||
break;
|
||||
case "NewPost":
|
||||
require_permission('r-wiki');
|
||||
// Betriebsrat darf neue Posts erstellen (nur in freigegebenen Kategorien)
|
||||
require_wiki_edit_permission();
|
||||
$_GET['new'] = 1;
|
||||
require_once(__DIR__ . '/../Views/post_cardform.php');
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user