Changes of the last few months including restructuring system from using only ranks to permissions
This commit is contained in:
@@ -298,7 +298,7 @@ class Blog extends CI_Controller
|
||||
$categories = $this->BlogModel->getCategories();
|
||||
$this->load->view('admin/sidebar', ['title' => 'Blog-Post erstellen', 'additionalStyles' => ['lib/medium-editor.min.css', 'lib/default.min.css', 'lib/medium-editor-insert-plugin.min.css']]);
|
||||
$this->load->view('admin/blog_edit', ['categories' => $categories, 'postID' => $postID, 'contents' => $contents, 'translations' => $translations, 'postLanguage' => $lang]);
|
||||
$this->load->view('admin/footer', ['additionalScripts' => 'lib/medium-editor.min.js,lib/handlebars.runtime-v4.0.10.js,lib/jquery-sortable.min.js,lib/jquery.ui.widget.js,lib/jquery.iframe-transport.js,lib/jquery.fileupload.js,lib/medium-editor-insert-plugin.min.js,lib/autolist.min.js,lib/highlight.pack.js,lib/quill.min.js,blog-edit.js']);
|
||||
$this->load->view('admin/footer', ['additionalScripts' => ['lib/medium-editor.min.js', 'lib/handlebars.runtime-v4.0.10.js', 'lib/jquery-sortable.min.js', 'lib/jquery.ui.widget.js', 'lib/jquery.iframe-transport.js', 'lib/jquery.fileupload.js', 'lib/medium-editor-insert-plugin.min.js', 'lib/autolist.min.js', 'lib/highlight.pack.js', 'lib/quill.min.js', 'blog-edit.js']]);
|
||||
}
|
||||
|
||||
public function history($postID = NULL)
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
|
||||
class Dashboard extends CI_Controller {
|
||||
class Dashboard extends MY_Controller {
|
||||
|
||||
public function __construct() {
|
||||
parent::__construct();
|
||||
@@ -9,7 +9,8 @@ class Dashboard extends CI_Controller {
|
||||
|
||||
public function index()
|
||||
{
|
||||
if (!isset($_SESSION['user']) || empty($_SESSION['user']) || $_SESSION['user']['rank'] < 6) redirect(base_url('login'));
|
||||
$this->neededPermission('dashboard.view');
|
||||
|
||||
$this->load->view('admin/sidebar', ['title' => 'Dashboard']);
|
||||
$this->load->view('admin/dashboard');
|
||||
$this->load->view('admin/footer');
|
||||
|
@@ -1,74 +0,0 @@
|
||||
<?php
|
||||
defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
|
||||
class Downloads extends CI_Controller
|
||||
{
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->load->model('downloadsModel', '', TRUE);
|
||||
$this->load->model('FileModel', '', TRUE);
|
||||
}
|
||||
|
||||
public function index()
|
||||
{
|
||||
if (!isset($_SESSION['user']) || empty($_SESSION['user']) || $_SESSION['user']['rank'] < 9) redirect(base_url('login'));
|
||||
$downloads = $this->downloadsModel->getDownloads();
|
||||
$this->load->view('admin/sidebar', ['title' => 'Alle Downloads']);
|
||||
$this->load->view('admin/downloads', ['downloads' => $downloads]);
|
||||
$this->load->view('admin/footer');
|
||||
}
|
||||
|
||||
public function edit($id = NULL)
|
||||
{
|
||||
if (!isset($_SESSION['user']) || empty($_SESSION['user']) || $_SESSION['user']['rank'] < 9) redirect(base_url('login'));
|
||||
$edit = $id === NULL ? false : true;
|
||||
$p = $this->input->post(['title', 'description', 'descriptionEnglish', 'image', 'url', 'datetime']);
|
||||
|
||||
if ($edit) {
|
||||
if ($this->downloadsModel->checkIfExists($id)) {
|
||||
$downloadContent = $this->downloadsModel->getDownload($id);
|
||||
} else {
|
||||
redirect(base_url('admin/downloads/edit'));
|
||||
}
|
||||
|
||||
if ($p['title'] != NULL && $p['description'] != NULL && $p['datetime'] != NULL && $p['url'] !== NULL) {
|
||||
$imgurl = '/assets/images/placeholder.jpg';
|
||||
if (isset($_FILES['downloadImage']) && $_FILES['downloadImage']['size'] > 0) {
|
||||
$fileName = $_FILES['downloadImage']['name'];
|
||||
$tmpName = $_FILES['downloadImage']['tmp_name'];
|
||||
$fileSize = $_FILES['downloadImage']['size'];
|
||||
$fileType = $_FILES['downloadImage']['type'];
|
||||
unset($_FILES['downloadImage']);
|
||||
|
||||
$imgurl = $this->FileModel->uploadFile($fileName, $tmpName, $fileSize, $fileType);
|
||||
}
|
||||
$this->downloadsModel->addNewDownload($p['datetime'], $p['title'], $p['description'], $p['descriptionEnglish'], $imgurl, $p['url']);
|
||||
redirect(base_url('admin/downloads/edit/' . $id));
|
||||
}
|
||||
|
||||
$this->load->view('admin/sidebar', ['title' => 'Download-Eintrag bearbeiten']);
|
||||
$this->load->view('admin/download_edit', ['edit' => $edit, 'content' => $downloadContent]);
|
||||
$this->load->view('admin/footer');
|
||||
} else {
|
||||
if ($p['title'] != NULL && $p['description'] != NULL && $p['datetime'] != NULL && isset($_FILES['downloadImage']) && $_FILES['downloadImage']['size'] > 0 && $p['url'] !== NULL) {
|
||||
$fileName = $_FILES['downloadImage']['name'];
|
||||
$tmpName = $_FILES['downloadImage']['tmp_name'];
|
||||
$fileSize = $_FILES['downloadImage']['size'];
|
||||
$fileType = $_FILES['downloadImage']['type'];
|
||||
|
||||
$imgurl = $this->FileModel->uploadFile($fileName, $tmpName, $fileSize, $fileType);
|
||||
unset($_FILES['downloadImage']);
|
||||
|
||||
$this->downloadsModel->addNewDownload($p['datetime'], $p['title'], $p['description'], $p['descriptionEnglish'], $imgurl, $p['url']);
|
||||
redirect(base_url('admin/downloads/edit'));
|
||||
}
|
||||
|
||||
$this->load->view('admin/sidebar', ['title' => 'Download-Eintrag erstellen']);
|
||||
$this->load->view('admin/download_edit', ['edit' => $edit]);
|
||||
$this->load->view('admin/footer');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
|
||||
class Feedback extends CI_Controller
|
||||
class Feedback extends MY_Controller
|
||||
{
|
||||
|
||||
public function __construct()
|
||||
@@ -11,7 +11,7 @@ class Feedback extends CI_Controller
|
||||
}
|
||||
|
||||
public function index() {
|
||||
if (!isset($_SESSION['user']) || empty($_SESSION['user']) || $_SESSION['user']['rank'] < 9) redirect(base_url('login'));
|
||||
$this->neededPermission('feedback.receive');
|
||||
|
||||
$feedback = $this->MessageModel->getFeedbackMessages();
|
||||
|
||||
@@ -21,7 +21,7 @@ class Feedback extends CI_Controller
|
||||
}
|
||||
|
||||
public function takeover($id = null, $state = 1) {
|
||||
if (!isset($_SESSION['user']) || empty($_SESSION['user']) || $_SESSION['user']['rank'] < 9) redirect(base_url('login'));
|
||||
$this->neededPermission('feedback.reply');
|
||||
|
||||
if($id != null) {
|
||||
$this->MessageModel->setFeedbackSupporter($id, $_SESSION['user']['ID'], $state);
|
||||
@@ -31,7 +31,7 @@ class Feedback extends CI_Controller
|
||||
}
|
||||
|
||||
public function change($id) {
|
||||
if (!isset($_SESSION['user']) || empty($_SESSION['user']) || $_SESSION['user']['rank'] < 9) redirect(base_url('login'));
|
||||
$this->neededPermission('feedback.reply');
|
||||
|
||||
if($id != null) {
|
||||
$newStatus = $this->input->post('feedbackState');
|
||||
@@ -44,7 +44,7 @@ class Feedback extends CI_Controller
|
||||
|
||||
public function archive() {
|
||||
// header('Content-Type: application/json');
|
||||
if (!isset($_SESSION['user']) || empty($_SESSION['user']) || $_SESSION['user']['rank'] < 9) {
|
||||
if (!$this->hasPermission('feedback.reply')) {
|
||||
echo json_encode(['type' => 'error', 'message' => 'Du musst eingeloggt sein, um Feedbacks zu beantworten.']);
|
||||
exit;
|
||||
}
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
|
||||
class Files extends CI_Controller
|
||||
class Files extends MY_Controller
|
||||
{
|
||||
|
||||
public function __construct()
|
||||
@@ -12,7 +12,7 @@ class Files extends CI_Controller
|
||||
|
||||
public function index()
|
||||
{
|
||||
if (!isset($_SESSION['user']) || empty($_SESSION['user']) || $_SESSION['user']['rank'] < 9) redirect(base_url('login'));
|
||||
$this->neededPermission('file.view');
|
||||
|
||||
if(isset($_FILES['fileUpload'])) {
|
||||
$fileName = $_FILES['fileUpload']['name'];
|
||||
@@ -20,7 +20,7 @@ class Files extends CI_Controller
|
||||
$fileSize = $_FILES['fileUpload']['size'];
|
||||
$fileType = $_FILES['fileUpload']['type'];
|
||||
|
||||
$this->FileModel->uploadFile($fileName, $tmpName, $fileSize, $fileType);
|
||||
$this->FileModel->uploadFile($fileName, $tmpName, $fileSize, $fileType, false);
|
||||
|
||||
unset($_FILES['fileUpload']);
|
||||
|
||||
@@ -36,7 +36,8 @@ class Files extends CI_Controller
|
||||
}
|
||||
|
||||
public function delete() {
|
||||
if (!isset($_SESSION['user']) || empty($_SESSION['user']) || $_SESSION['user']['rank'] < 9) redirect(base_url('login'));
|
||||
$this->neededPermission('file.delete');
|
||||
|
||||
$id = filter_input(INPUT_POST, "id");
|
||||
$this->FileModel->delete($id);
|
||||
}
|
||||
@@ -44,7 +45,7 @@ class Files extends CI_Controller
|
||||
public function uploadImage()
|
||||
{
|
||||
header("Content-Type: application/json");
|
||||
if (!isset($_SESSION['user']) || empty($_SESSION['user']) || $_SESSION['user']['rank'] < 6) {
|
||||
if (!$this->hasPermission('file.uploadManual')) {
|
||||
echo json_encode([
|
||||
'success' => false,
|
||||
'message' => '<b>Fehler beim Upload!</b> Aufgrund von zu geringen Zugriffsrechten konnte das Bild leider nicht hochgeladen werden. Sollte es sich dabei um ein Irrtum handeln, kontaktiere bitte einen Admin über das Kontaktformular.'
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
|
||||
class Projects extends CI_Controller
|
||||
class Projects extends MY_Controller
|
||||
{
|
||||
|
||||
public function __construct()
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
public function index()
|
||||
{
|
||||
if (!isset($_SESSION['user']) || empty($_SESSION['user']) || $_SESSION['user']['rank'] < 9) redirect(base_url('login'));
|
||||
$this->neededPermission('projects.view');
|
||||
|
||||
$entries = $this->ProjectsModel->getEntries('all');
|
||||
$categories = $this->ProjectsModel->getCategories('all');
|
||||
@@ -25,12 +25,17 @@
|
||||
|
||||
public function edit($id = NULL)
|
||||
{
|
||||
if (!isset($_SESSION['user']) || empty($_SESSION['user']) || $_SESSION['user']['rank'] < 9) redirect(base_url('login'));
|
||||
$this->neededPermission('projects.create');
|
||||
|
||||
$edit = $id === NULL ? false : true;
|
||||
|
||||
$content = null;
|
||||
$projectCategories = [];
|
||||
|
||||
if ($edit) {
|
||||
// TODO: Check if project is created by user or not
|
||||
$this->neededPermission('projects.edit');
|
||||
|
||||
if ($this->ProjectsModel->checkIfExists($id)) {
|
||||
$content = $this->ProjectsModel->getEntry($id);
|
||||
$content = $this->ProjectsModel->mergeFullTranslationData($content)[0];
|
||||
@@ -50,8 +55,16 @@
|
||||
public function sendEdit()
|
||||
{
|
||||
header('Content-Type: application/json');
|
||||
if (!isset($_SESSION['user']) || empty($_SESSION['user']) || $_SESSION['user']['rank'] < 9) {
|
||||
echo json_encode(['success' => false, 'message' => 'Du hast nicht genügend Rechte, um Projekte zu erstellen bzw. bearbeiten.']);
|
||||
if (!$this->hasPermission('projects.create')) {
|
||||
echo json_encode(['success' => false, 'message' => 'Du hast nicht genügend Rechte, um Projekte zu erstellen.']);
|
||||
exit;
|
||||
}
|
||||
|
||||
$editingID = $this->input->post('editingID');
|
||||
|
||||
// TODO: Check if user is author of project
|
||||
if($editingID !== '-1' && !$this->hasPermission('projects.edit')) {
|
||||
echo json_encode(['success' => false, 'message' => 'Du hast nicht genügend Rechte, um Projekte zu bearbeiten.']);
|
||||
exit;
|
||||
}
|
||||
|
||||
@@ -83,7 +96,6 @@
|
||||
$date = date('Y-m-d H:i:s', strtotime($this->input->post('date')));
|
||||
$image = $this->input->post('image');
|
||||
|
||||
$editingID = $this->input->post('editingID');
|
||||
|
||||
if($editingID == '-1' && $this->ProjectsModel->checkIfNameExists($url)) {
|
||||
echo json_encode(['success' => false, 'message' => 'Die angegebene URL ist bereits vergeben.']);
|
||||
@@ -102,14 +114,17 @@
|
||||
|
||||
public function delete()
|
||||
{
|
||||
if (!isset($_SESSION['user']) || empty($_SESSION['user']) || $_SESSION['user']['rank'] < 9) redirect(base_url('login'));
|
||||
// TODO: Check if user is author of project
|
||||
$this->neededPermission('projects.delete');
|
||||
|
||||
$id = filter_input(INPUT_POST, "id");
|
||||
$this->ProjectsModel->delete($id);
|
||||
}
|
||||
|
||||
public function delete_category()
|
||||
{
|
||||
if (!isset($_SESSION['user']) || empty($_SESSION['user']) || $_SESSION['user']['rank'] < 9) redirect(base_url('login'));
|
||||
$this->neededPermission('projects.deleteCategory');
|
||||
|
||||
$id = filter_input(INPUT_POST, "id");
|
||||
$this->ProjectsModel->deleteCategory($id);
|
||||
}
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
|
||||
class Redirects extends CI_Controller
|
||||
class Redirects extends MY_Controller
|
||||
{
|
||||
|
||||
public function __construct()
|
||||
@@ -12,7 +12,8 @@ class Redirects extends CI_Controller
|
||||
|
||||
public function index()
|
||||
{
|
||||
if (!isset($_SESSION['user']) || empty($_SESSION['user']) || $_SESSION['user']['rank'] < 9) redirect(base_url('login'));
|
||||
$this->neededPermission('redirect.view');
|
||||
|
||||
$redirects = $this->RedirectModel->getItems();
|
||||
$this->load->view('admin/sidebar', ['title' => 'Alle Weiterleitungen']);
|
||||
$this->load->view('admin/redirects', ['redirects' => $redirects]);
|
||||
@@ -20,7 +21,7 @@ class Redirects extends CI_Controller
|
||||
}
|
||||
|
||||
public function addRedirect() {
|
||||
if (!isset($_SESSION['user']) || empty($_SESSION['user']) || $_SESSION['user']['rank'] < 9) redirect(base_url('login'));
|
||||
$this->neededPermission('redirect.create');
|
||||
|
||||
$id = $this->input->post('redirectID');
|
||||
$name = $this->input->post('redirectName');
|
||||
@@ -28,6 +29,8 @@ class Redirects extends CI_Controller
|
||||
|
||||
if(isset($name) && isset($url)) {
|
||||
if(isset($id)) {
|
||||
$this->neededPermission('redirect.edit');
|
||||
|
||||
$this->RedirectModel->editRedirect($id, $url, $name);
|
||||
} else {
|
||||
$this->RedirectModel->insertRedirect($url, $name);
|
||||
@@ -38,7 +41,7 @@ class Redirects extends CI_Controller
|
||||
}
|
||||
|
||||
public function removeRedirect($id = null) {
|
||||
if (!isset($_SESSION['user']) || empty($_SESSION['user']) || $_SESSION['user']['rank'] < 9) redirect(base_url('login'));
|
||||
$this->neededPermission('redirect.delete');
|
||||
|
||||
if($id != null) {
|
||||
$this->RedirectModel->removeRedirect($id);
|
||||
|
@@ -3,27 +3,89 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
|
||||
class Users extends MY_Controller
|
||||
{
|
||||
private $availablePermissions;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->load->model('UserModel', '', TRUE);
|
||||
|
||||
$this->availablePermissions = [
|
||||
'projects' => [
|
||||
'view',
|
||||
'create',
|
||||
'editOwn',
|
||||
'edit',
|
||||
'deleteOwn',
|
||||
'delete',
|
||||
'deleteCategory',
|
||||
],
|
||||
'blog' => [
|
||||
'view',
|
||||
'create',
|
||||
'editOwn',
|
||||
'edit',
|
||||
'deleteOwn',
|
||||
'delete',
|
||||
'deleteOwnFinally',
|
||||
'deleteFinally',
|
||||
'createCategory',
|
||||
'publishNow',
|
||||
'publish',
|
||||
'publishSelf',
|
||||
],
|
||||
'file' => [
|
||||
'view',
|
||||
'upload',
|
||||
'uploadManually',
|
||||
'delete',
|
||||
],
|
||||
'redirect' => [
|
||||
'view',
|
||||
'create',
|
||||
'edit',
|
||||
'delete',
|
||||
],
|
||||
'user' => [
|
||||
'disableAds',
|
||||
'view',
|
||||
'viewDetails',
|
||||
'changeRank',
|
||||
'editPermissions',
|
||||
'ban',
|
||||
'deletePost',
|
||||
],
|
||||
'reports' => [
|
||||
'receive',
|
||||
],
|
||||
'feedback' => [
|
||||
'receive',
|
||||
'reply',
|
||||
],
|
||||
'contact' => [
|
||||
'view',
|
||||
'answer',
|
||||
],
|
||||
'dashboard' => [
|
||||
'view',
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
public function index()
|
||||
{
|
||||
if (!isset($_SESSION['user']) || empty($_SESSION['user']) || $_SESSION['user']['rank'] < 9) redirect(base_url('login'));
|
||||
$this->neededPermission('user.view');
|
||||
|
||||
$usersData = $this->UserModel->getUserList(50, 0);
|
||||
|
||||
$this->load->view('admin/sidebar', ['title' => 'Alle Nutzer']);
|
||||
$this->load->view('admin/users', ['users' => $usersData]);
|
||||
$this->load->view('admin/footer');
|
||||
$this->load->view('admin/footer', ['additionalScripts' => ['admin_users.js']]);
|
||||
}
|
||||
|
||||
public function details($userID = NULL)
|
||||
{
|
||||
if (!isset($_SESSION['user']) || empty($_SESSION['user']) || $_SESSION['user']['rank'] < 9) redirect(base_url('login'));
|
||||
$this->neededPermission('user.viewDetails');
|
||||
|
||||
if ($userID == NULL) redirect(base_url('admin/users'));
|
||||
|
||||
@@ -39,7 +101,7 @@ class Users extends MY_Controller
|
||||
|
||||
public function settings($userID = NULL)
|
||||
{
|
||||
if (!isset($_SESSION['user']) || empty($_SESSION['user']) || $_SESSION['user']['rank'] < 9) redirect(base_url('login'));
|
||||
$this->neededPermission('user.viewDetails');
|
||||
|
||||
if ($userID == NULL) redirect(base_url('admin/users'));
|
||||
|
||||
@@ -48,7 +110,9 @@ class Users extends MY_Controller
|
||||
if ($userData == null) redirect(base_url('admin/users'));
|
||||
$userData = $userData[0];
|
||||
|
||||
if (isset($_POST['rank'])) {
|
||||
$reload = false;
|
||||
|
||||
if ($this->hasPermission('user.changeRank') && isset($_POST['rank'])) {
|
||||
$rank = intval($_POST['rank']);
|
||||
if (($rank < 1) || ($rank > 3 && $rank < 6) || $rank > 10) {
|
||||
redirect(base_url(uri_string()));
|
||||
@@ -74,11 +138,40 @@ class Users extends MY_Controller
|
||||
$this->UserModel->insertIntoHistory($historyData);
|
||||
// Update profile
|
||||
$this->UserModel->updateProfile(['rank' => $rank], $userID);
|
||||
|
||||
$reload = true;
|
||||
}
|
||||
|
||||
if($this->hasPermission('user.editPermissions') && isset($_POST['permissions'])) {
|
||||
$perms = array_keys($_POST['permissions']);
|
||||
|
||||
foreach ($this->availablePermissions as $group => $permissions) {
|
||||
foreach ($permissions as $permission) {
|
||||
$userHasPermission = $this->UserModel->hasPermission($userID, $group, $permission);
|
||||
|
||||
if(in_array($group . $permission, $perms)) { // Permission was given by user
|
||||
if(!$userHasPermission) { // Subject hasn't got the permission already
|
||||
$this->UserModel->addPermission($userID, $group, $permission, $_SESSION['user']['ID']);
|
||||
}
|
||||
} else {
|
||||
if($userHasPermission) {
|
||||
$this->UserModel->revokePermission($userID, $group, $permission);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$reload = true;
|
||||
}
|
||||
|
||||
if($reload) {
|
||||
redirect(base_url(uri_string()));
|
||||
}
|
||||
|
||||
$permissions = $this->UserModel->getPermissions($userID);
|
||||
|
||||
$this->load->view('admin/sidebar', ['title' => 'Nutzer-Einstellungen - ' . $userData['displayname']]);
|
||||
$this->load->view('admin/user_settings', ['user' => $userData]);
|
||||
$this->load->view('admin/footer');
|
||||
$this->load->view('admin/user_settings', ['user' => $userData, 'permissions' => $permissions, 'availablePermissions' => $this->availablePermissions]);
|
||||
$this->load->view('admin/footer', ['additionalScripts' => ['user-edit.js']]);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user