From: garvinhicking Date: Sun, 5 Jun 2005 20:39:34 +0000 (+0000) Subject: ACL group permission setup for Serendipity. X-Git-Tag: 0.9~422 X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=9c4da2be8af42b390128d29a88d6511891c783a4;p=s9y.git ACL group permission setup for Serendipity. Very experimental. I tested it until my head went into flames. Testers very much appreciated. There's a little notice in the docs/NEWs file for future TODOs. I need QA guys who check if the system is exploitable; please read more on the mailinglist. --- diff --git a/docs/NEWS b/docs/NEWS index dc7ea22..58d79de 100644 --- a/docs/NEWS +++ b/docs/NEWS @@ -3,6 +3,20 @@ Version 0.9 () ------------------------------------------------------------------------ + * Introduce permission groups with customizable permission sets. + (garvinhicking) + + This Feature is currently declared "unstable" and will definitely + need finetuning before it usable in restricted environments. + TODO: + * Check Plugins like loginform, adduser to use group-functionality. + * Get rid of as many obsolete userlevel checks in the Admin user/groups + panel. + * Chief editors may not join Admin group if forbidden? + * Chief editors may not enter siteConfiguration if forbidden? + + * Make bblog importer recognize trackbacks. Thanks to Hanno! + * Spartacus plugin can now properly handle plugins which contain both sidebar and event plugins in one directory (garvinhicking) diff --git a/include/admin/category.inc.php b/include/admin/category.inc.php index d55a884..066efaa 100644 --- a/include/admin/category.inc.php +++ b/include/admin/category.inc.php @@ -6,11 +6,11 @@ if (IN_serendipity !== true) { die ("Don't hack!"); } -if ($serendipity['no_create']) { +if (!serendipity_checkPermission('adminCategory')) { return; } -$admin_category = ($serendipity['serendipityUserlevel'] < USERLEVEL_CHIEF ? "AND (authorid = 0 OR authorid = " . (int)$serendipity['authorid'] . ")" : ''); +$admin_category = (!serendipity_checkPermission('adminCategoriesMaintainOthers') ? "AND (authorid = 0 OR authorid = " . (int)$serendipity['authorid'] . ")" : ''); /* Add a new category */ if (isset($_POST['SAVE'])) { @@ -108,7 +108,8 @@ if ($serendipity['GET']['adminAction'] == 'doDelete') { = USERLEVEL_CHIEF || $serendipity['authorid'] == $this_cat['authorid'] || $this_cat['authorid'] == '0') { + if ( (serendipity_checkPermission('adminCategoriesDelete') && serendipity_checkPermission('adminCategoriesMaintainOthers')) + || (serendipity_checkPermission('adminCategoriesDelete') && ($serendipity['authorid'] == $this_cat['authorid'] || $this_cat['authorid'] == '0')) ) { ?>

@@ -119,7 +120,7 @@ if ($serendipity['GET']['adminAction'] == 'doDelete') { $cats = serendipity_fetchCategories('all'); /* TODO, show dropdown as nested categories */ foreach ($cats as $cat_data) { - if ($cat_data['categoryid'] != $serendipity['GET']['cid'] && ($serendipity['serendipityUserlevel'] >= USERLEVEL_ADMIN || $cat_data['authorid'] == '0' || $cat_data['authorid'] == $serendipity['authorid'])) { + if ($cat_data['categoryid'] != $serendipity['GET']['cid'] && (serendipity_checkPermission('adminCategoriesMaintainOthers') || $cat_data['authorid'] == '0' || $cat_data['authorid'] == $serendipity['authorid'])) { echo '' . "\n"; } } diff --git a/include/admin/comments.inc.php b/include/admin/comments.inc.php index 32154a2..53a5b0f 100644 --- a/include/admin/comments.inc.php +++ b/include/admin/comments.inc.php @@ -6,7 +6,7 @@ if (IN_serendipity !== true) { die ("Don't hack!"); } -if ($serendipity['no_create']) { +if (!serendipity_checkPermission('adminComments')) { return; } @@ -164,7 +164,7 @@ $sql = serendipity_db_query("SELECT c.*, e.title FROM {$serendipity['dbPrefix']} LEFT JOIN {$serendipity['dbPrefix']}entries e ON (e.id = c.entry_id) WHERE type = '$c_type' ". $and ." - " . (($serendipity['serendipityUserlevel'] != USERLEVEL_ADMIN) ? 'AND e.authorid = ' . (int)$serendipity['authorid'] : '') . " + " . (!serendipity_checkPermission('adminEntriesMaintainOthers') ? 'AND e.authorid = ' . (int)$serendipity['authorid'] : '') . " ORDER BY c.id DESC $limit"); ?>