From 707e2af9d1907d4508c01cc10929fb410e565e70 Mon Sep 17 00:00:00 2001 From: Christian Hofmaier Date: Fri, 29 Sep 2017 18:00:10 +0200 Subject: [news] small design change + implemented new permission system --- modules-available/news/page.inc.php | 65 ++++++++++++++-------- .../news/permissions/permissions.json | 6 ++ modules-available/news/templates/page-news.html | 26 ++++++--- 3 files changed, 66 insertions(+), 31 deletions(-) create mode 100644 modules-available/news/permissions/permissions.json diff --git a/modules-available/news/page.inc.php b/modules-available/news/page.inc.php index ee377dc4..bf70f1a8 100644 --- a/modules-available/news/page.inc.php +++ b/modules-available/news/page.inc.php @@ -32,12 +32,6 @@ class Page_News extends Page // load user, we will need it later User::load(); - // only admins should be able to edit news - if (!User::hasPermission('superadmin')) { - Message::addError('main.no-permission'); - Util::redirect('?do=Main'); - } - // check which action we need to do $action = Request::any('action', 'show'); if ($action === 'clear') { @@ -66,26 +60,53 @@ class Page_News extends Page $pageType = Request::post('news-type'); if ($pageType == 'news') { - if (!$this->saveNews()) { - // re-set the fields we got - Request::post('news-title') ? $this->newsTitle = Request::post('news-title') : $this->newsTitle = false; - Request::post('news-content') ? $this->newsContent = Request::post('news-content') : $this->newsContent = false; - } else { - Message::addSuccess('news-save-success'); - $lastId = Database::lastInsertId(); - Util::redirect("?do=News&newsid=$lastId"); - } + if(User::hasPermission("news.save")) { + if (!$this->saveNews()) { + // re-set the fields we got + Request::post('news-title') ? $this->newsTitle = Request::post('news-title') : $this->newsTitle = false; + Request::post('news-content') ? $this->newsContent = Request::post('news-content') : $this->newsContent = false; + } else { + Message::addSuccess('news-save-success'); + $lastId = Database::lastInsertId(); + Util::redirect("?do=News&newsid=$lastId"); + } + } else { + Message::addError('main.no-permission'); + Util::redirect('?do=news'); + } } elseif ($pageType == 'help') { - if ($this->saveHelp()) { - Message::addSuccess('help-save-success'); - $lastId = Database::lastInsertId(); - Util::redirect("?do=News&newsid=$lastId"); - } + if(User::hasPermission("help.save")) { + if ($this->saveHelp()) { + Message::addSuccess('help-save-success'); + $lastId = Database::lastInsertId(); + Util::redirect("?do=News&newsid=$lastId"); + } + } else { + Message::addError('main.no-permission'); + Util::redirect('?do=news'); + } } } elseif ($action === 'delete') { // delete it - $this->delNews(Request::post('newsid')); - Util::redirect('?do=News&editHelp='.Request::any('editHelp')); + $pageType = Request::post('news-type'); + + if ($pageType == 'news') { + if (User::hasPermission("news.delete")) { + $this->delNews(Request::post('newsid')); + Util::redirect('?do=News&editHelp='.Request::any('editHelp')); + } else { + Message::addError('main.no-permission'); + Util::redirect('?do=news'); + } + } elseif ($pageType == 'help') { + if (User::hasPermission("help.delete")) { + $this->delNews(Request::post('newsid')); + Util::redirect('?do=News&editHelp='.Request::any('editHelp')); + } else { + Message::addError('main.no-permission'); + Util::redirect('?do=news'); + } + } } else { // unknown action, redirect user Message::addError('invalid-action', $action); diff --git a/modules-available/news/permissions/permissions.json b/modules-available/news/permissions/permissions.json new file mode 100644 index 00000000..90d07aef --- /dev/null +++ b/modules-available/news/permissions/permissions.json @@ -0,0 +1,6 @@ +{ + "news.save": "Save new news.", + "news.delete": "Delete old news.", + "help.save": "Save new help texts.", + "help.delete": "Delete old help texts" +} \ No newline at end of file diff --git a/modules-available/news/templates/page-news.html b/modules-available/news/templates/page-news.html index 37e3471d..ad1a08c8 100644 --- a/modules-available/news/templates/page-news.html +++ b/modules-available/news/templates/page-news.html @@ -1,5 +1,5 @@ -

{{lang_vmChooser_title}}

+