From 4f80e078105f7ac14b11d99238cbd5e17ea3b61a Mon Sep 17 00:00:00 2001 From: trendschau Date: Sat, 11 Jul 2020 20:28:27 +0200 Subject: [PATCH] Version 1.3.8: ACL Integration --- .../01-cyanine-theme/03-content-elements.yaml | 7 +- media/live/hostinger-1.png | Bin 6056 -> 0 bytes media/live/hostinger-2.png | Bin 6056 -> 0 bytes media/live/hostinger.png | Bin 6056 -> 0 bytes media/live/logo.png | Bin 97075 -> 0 bytes media/original/hostinger-1.png | Bin 6056 -> 0 bytes media/original/hostinger-2.png | Bin 6056 -> 0 bytes media/original/hostinger.png | Bin 6056 -> 0 bytes media/original/logo.png | Bin 59166 -> 0 bytes media/thumbs/hostinger-1.png | Bin 5396 -> 0 bytes media/thumbs/hostinger-2.png | Bin 5396 -> 0 bytes media/thumbs/hostinger.png | Bin 5396 -> 0 bytes media/thumbs/logo.png | Bin 10951 -> 0 bytes system/Controllers/ArticleApiController.php | 162 +++- system/Controllers/AuthController.php | 13 +- system/Controllers/BlockApiController.php | 87 +- .../Controllers/ContentBackendController.php | 28 +- system/Controllers/ContentController.php | 19 + system/Controllers/MediaApiController.php | 12 + system/Controllers/MetaApiController.php | 16 + system/Controllers/SettingsController.php | 889 +++++++++--------- system/Controllers/SetupController.php | 6 +- system/Events/OnSystemnaviLoaded.php | 14 + system/Events/OnUserfieldsLoaded.php | 14 + system/Extensions/TwigUserExtension.php | 10 + system/Middleware/RedirectIfNoAdmin.php | 3 + system/Models/User.php | 32 +- system/Models/WriteMeta.php | 18 +- system/Routes/Web.php | 20 +- system/Settings.php | 22 +- system/Translations.php | 2 +- system/author/css/style.css | 33 +- system/author/editor/editor-blox.twig | 24 +- system/author/editor/editor-raw.twig | 4 + system/author/editor/publish-controller.twig | 59 +- system/author/js/vue-blox.js | 6 +- system/author/js/vue-meta.js | 4 + system/author/js/vue-publishcontroller.js | 15 +- system/author/metatabs.yaml | 9 +- system/author/partials/aside.twig | 20 +- system/author/partials/navi.twig | 13 +- system/author/settings/user.twig | 4 +- system/author/settings/userlist.twig | 8 + system/author/settings/usernew.twig | 36 +- 44 files changed, 1033 insertions(+), 576 deletions(-) delete mode 100644 media/live/hostinger-1.png delete mode 100644 media/live/hostinger-2.png delete mode 100644 media/live/hostinger.png delete mode 100644 media/live/logo.png delete mode 100644 media/original/hostinger-1.png delete mode 100644 media/original/hostinger-2.png delete mode 100644 media/original/hostinger.png delete mode 100644 media/original/logo.png delete mode 100644 media/thumbs/hostinger-1.png delete mode 100644 media/thumbs/hostinger-2.png delete mode 100644 media/thumbs/hostinger.png delete mode 100644 media/thumbs/logo.png create mode 100644 system/Events/OnSystemnaviLoaded.php create mode 100644 system/Events/OnUserfieldsLoaded.php diff --git a/content/01-cyanine-theme/03-content-elements.yaml b/content/01-cyanine-theme/03-content-elements.yaml index cf490a6..abcd5bc 100644 --- a/content/01-cyanine-theme/03-content-elements.yaml +++ b/content/01-cyanine-theme/03-content-elements.yaml @@ -1,8 +1,13 @@ meta: title: 'Content Elements' description: "There are a lot of other settings for your content area. For example: \nAdd an edit-button for github, gitlab or other plattforms.\nShow the author.\nShow the publish date.\nShow the chapter numbers in the navigation.\n" + heroimage: null + heroimagealt: null + owner: testauthor author: trendschau + manualdate: null + modified: '2020-07-09' created: '2020-06-11' time: 21-05-02 navtitle: 'content elements' - modified: '2020-06-11' + hide: false diff --git a/media/live/hostinger-1.png b/media/live/hostinger-1.png deleted file mode 100644 index 8768d5c9a44a487c010784b458e6aef9500ae5ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6056 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

M@@T#|sh5;}9^rv@UoZGWACRqWP-&9;|K^ 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

1OOsbJ+%)|P$$hCXi+Na6j9+Q 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 diff --git a/media/thumbs/hostinger-1.png b/media/thumbs/hostinger-1.png deleted file mode 100644 index 693c1a91b19fe9c094a83aafb01532b329b41229..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5396 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 diff --git a/media/thumbs/hostinger-2.png b/media/thumbs/hostinger-2.png deleted file mode 100644 index 693c1a91b19fe9c094a83aafb01532b329b41229..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5396 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 diff --git a/media/thumbs/hostinger.png b/media/thumbs/hostinger.png deleted file mode 100644 index 693c1a91b19fe9c094a83aafb01532b329b41229..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5396 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 diff --git a/media/thumbs/logo.png b/media/thumbs/logo.png deleted file mode 100644 index 8b3ae82ebf8a360c1125af6ad31816046869a2e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10951 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 pFP#?ucU?mjLYX?params = $request->getParams(); $this->uri = $request->getUri()->withUserInfo(''); + # minimum permission is that user can publish his own content + if(!$this->c->acl->isAllowed($_SESSION['role'], 'mycontent', 'publish')) + { + return $response->withJson(array('data' => false, 'errors' => ['message' => 'You are not allowed to publish content.']), 403); + } + # validate input only if raw mode if($this->params['raw']) { @@ -35,6 +41,16 @@ class ArticleApiController extends ContentController # set item if(!$this->setItem()){ return $response->withJson($this->errors, 404); } + + # if user has no right to update content from others (eg admin or editor) + if(!$this->c->acl->isAllowed($_SESSION['role'], 'content', 'publish')) + { + # check ownership. This code should nearly never run, because there is no button/interface to trigger it. + if(!$this->checkContentOwnership()) + { + return $response->withJson(array('data' => false, 'errors' => ['message' => 'You are not allowed to publish content.']), 403); + } + } # set the status for published and drafted $this->setPublishStatus(); @@ -100,12 +116,28 @@ class ArticleApiController extends ContentController $this->params = $request->getParams(); $this->uri = $request->getUri()->withUserInfo(''); + # minimum permission is that user can unpublish his own content + if(!$this->c->acl->isAllowed($_SESSION['role'], 'mycontent', 'unpublish')) + { + return $response->withJson(array('data' => false, 'errors' => ['message' => 'You are not allowed to unpublish content.']), 403); + } + # set structure if(!$this->setStructure($draft = true)){ return $response->withJson($this->errors, 404); } # set item if(!$this->setItem()){ return $response->withJson($this->errors, 404); } + # if user has no right to update content from others (eg admin or editor) + if(!$this->c->acl->isAllowed($_SESSION['role'], 'content', 'unpublish')) + { + # check ownership. This code should nearly never run, because there is no button/interface to trigger it. + if(!$this->checkContentOwnership()) + { + return $response->withJson(array('data' => false, 'errors' => ['message' => 'You are not allowed to unpublish content.']), 403); + } + } + # set the status for published and drafted $this->setPublishStatus(); @@ -178,17 +210,32 @@ class ArticleApiController extends ContentController $this->params = $request->getParams(); $this->uri = $request->getUri()->withUserInfo(''); + # minimum permission is that user is allowed to update his own content + if(!$this->c->acl->isAllowed($_SESSION['role'], 'mycontent', 'update')) + { + return $response->withJson(array('data' => false, 'errors' => ['message' => 'You are not allowed to publish content.']), 403); + } + # set structure if(!$this->setStructure($draft = true)){ return $response->withJson($this->errors, 404); } # set item if(!$this->setItem()){ return $response->withJson($this->errors, 404); } + # if user has no right to update content from others (eg admin or editor) + if(!$this->c->acl->isAllowed($_SESSION['role'], 'content', 'update')) + { + # check ownership. This code should nearly never run, because there is no button/interface to trigger it. + if(!$this->checkContentOwnership()) + { + return $response->withJson(array('data' => false, 'errors' => ['message' => 'You are not allowed to update content.']), 403); + } + } + # remove the unpublished changes $delete = $this->deleteContentFiles(['txt']); # set redirect url to edit page - $url = $this->uri->getBaseUrl() . '/tm/content/' . $this->settings['editor']; if(isset($this->item->urlRelWoF)) { @@ -217,6 +264,12 @@ class ArticleApiController extends ContentController $this->params = $request->getParams(); $this->uri = $request->getUri()->withUserInfo(''); + # minimum permission is that user is allowed to delete his own content + if(!$this->c->acl->isAllowed($_SESSION['role'], 'mycontent', 'delete')) + { + return $response->withJson(array('data' => false, 'errors' => ['message' => 'You are not allowed to delete content.']), 403); + } + # set url to base path initially $url = $this->uri->getBaseUrl() . '/tm/content/' . $this->settings['editor']; @@ -225,6 +278,16 @@ class ArticleApiController extends ContentController # set item if(!$this->setItem()){ return $response->withJson($this->errors, 404); } + + # if user has no right to delete content from others (eg admin or editor) + if(!$this->c->acl->isAllowed($_SESSION['role'], 'content', 'delete')) + { + # check ownership. This code should nearly never run, because there is no button/interface to trigger it. + if(!$this->checkContentOwnership()) + { + return $response->withJson(array('data' => false, 'errors' => ['message' => 'You are not allowed to delete content.']), 403); + } + } if($this->item->elementType == 'file') { @@ -275,16 +338,32 @@ class ArticleApiController extends ContentController # get params from call $this->params = $request->getParams(); $this->uri = $request->getUri()->withUserInfo(''); + + # minimum permission is that user is allowed to update his own content + if(!$this->c->acl->isAllowed($_SESSION['role'], 'mycontent', 'update')) + { + return $response->withJson(array('data' => false, 'errors' => ['message' => 'You are not allowed to update content.']), 403); + } # validate input if(!$this->validateEditorInput()){ return $response->withJson($this->errors,422); } # set structure if(!$this->setStructure($draft = true)){ return $response->withJson($this->errors, 404); } - + # set item if(!$this->setItem()){ return $response->withJson($this->errors, 404); } + # if user has no right to delete content from others (eg admin or editor) + if(!$this->c->acl->isAllowed($_SESSION['role'], 'content', 'update')) + { + # check ownership. This code should nearly never run, because there is no button/interface to trigger it. + if(!$this->checkContentOwnership()) + { + return $response->withJson(array('data' => false, 'errors' => ['message' => 'You are not allowed to update content.']), 403); + } + } + # set path for the file (or folder) $this->setItemPath('txt'); @@ -319,6 +398,12 @@ class ArticleApiController extends ContentController # get params from call $this->params = $request->getParams(); $this->uri = $request->getUri()->withUserInfo(''); + + # minimum permission is that user is allowed to update his own content + if(!$this->c->acl->isAllowed($_SESSION['role'], 'mycontent', 'update')) + { + return $response->withJson(array('data' => false, 'errors' => 'You are not allowed to update content.'), 403); + } # url is only needed, if an active page is moved to another folder, so user has to be redirected to the new url $url = false; @@ -339,6 +424,19 @@ class ArticleApiController extends ContentController if(!$item){ return $response->withJson(array('data' => $this->structure, 'errors' => 'We could not find this page. Please refresh and try again.', 'url' => $url), 404); } + # needed for acl check + $this->item = $item; + + # if user has no right to update content from others (eg admin or editor) + if(!$this->c->acl->isAllowed($_SESSION['role'], 'content', 'update')) + { + # check ownership. This code should nearly never run, because there is no button/interface to trigger it. + if(!$this->checkContentOwnership()) + { + return $response->withJson(array('data' => $this->structure, 'errors' => 'You are not allowed to move that content.'), 403); + } + } + # if an item is moved to the first level if($this->params['parent_id_to'] == 'navi') { @@ -397,7 +495,7 @@ class ArticleApiController extends ContentController } $index++; } - if($writeError){ return $response->withJson(array('data' => $this->structure, 'errors' => 'Something went wrong. Please refresh the page and check, if all folders and files are writable.', 'url' => $url), 404); } + if($writeError){ return $response->withJson(array('data' => $this->structure, 'errors' => ['message' => 'Something went wrong. Please refresh the page and check, if all folders and files are writable.'], 'url' => $url), 404); } # update the structure for editor $this->setStructure($draft = true, $cache = false); @@ -427,6 +525,12 @@ class ArticleApiController extends ContentController $this->params = $request->getParams(); $this->uri = $request->getUri()->withUserInfo(''); + # minimum permission is that user is allowed to update his own content + if(!$this->c->acl->isAllowed($_SESSION['role'], 'mycontent', 'create')) + { + return $response->withJson(array('data' => false, 'errors' => ['message' => 'You are not allowed to create content.']), 403); + } + # url is only needed, if an active page is moved $url = false; @@ -434,7 +538,7 @@ class ArticleApiController extends ContentController if(!$this->setStructure($draft = true)){ return $response->withJson(array('data' => false, 'errors' => $this->errors, 'url' => $url), 404); } # validate input - if(!$this->validateNaviItem()){ return $response->withJson(array('data' => $this->structure, 'errors' => 'Special Characters not allowed. Length between 1 and 60 chars.', 'url' => $url), 422); } + if(!$this->validateNaviItem()){ return $response->withJson(array('data' => $this->structure, 'errors' => ['message' => 'Special Characters not allowed. Length between 1 and 60 chars.'], 'url' => $url), 422); } # get the ids (key path) for item, old folder and new folder $folderKeyPath = explode('.', $this->params['folder_id']); @@ -442,7 +546,7 @@ class ArticleApiController extends ContentController # get the item from structure $folder = Folder::getItemWithKeyPath($this->structure, $folderKeyPath); - if(!$folder){ return $response->withJson(array('data' => $this->structure, 'errors' => 'We could not find this page. Please refresh and try again.', 'url' => $url), 404); } + if(!$folder){ return $response->withJson(array('data' => $this->structure, 'errors' => ['message' => 'We could not find this page. Please refresh and try again.'], 'url' => $url), 404); } $name = $this->params['item_name']; $slug = URLify::filter(iconv(mb_detect_encoding($this->params['item_name'], mb_detect_order(), true), "UTF-8", $this->params['item_name'])); @@ -464,7 +568,6 @@ class ArticleApiController extends ContentController return $response->withJson(array('data' => $this->structure, 'errors' => 'We could not create the file. Please refresh the page and check, if all folders and files are writable.', 'url' => $url), 404); } - # get extended structure $extended = $write->getYaml('cache', 'structure-extended.yaml'); @@ -494,6 +597,12 @@ class ArticleApiController extends ContentController $this->params = $request->getParams(); $this->uri = $request->getUri()->withUserInfo(''); + # minimum permission is that user is allowed to update his own content + if(!$this->c->acl->isAllowed($_SESSION['role'], 'mycontent', 'create')) + { + return $response->withJson(array('data' => false, 'errors' => ['message' => 'You are not allowed to create content.']), 403); + } + # url is only needed, if an active page is moved $url = false; @@ -608,6 +717,12 @@ class ArticleApiController extends ContentController # get params from call $this->params = $request->getParams(); $this->uri = $request->getUri()->withUserInfo(''); + + # minimum permission is that user is allowed to update his own content + if(!$this->c->acl->isAllowed($_SESSION['role'], 'mycontent', 'create')) + { + return $response->withJson(array('data' => false, 'errors' => 'You are not allowed to create content.'), 403); + } # url is only needed, if an active page is moved $url = false; @@ -730,12 +845,28 @@ class ArticleApiController extends ContentController /* get params from call */ $this->params = $request->getParams(); $this->uri = $request->getUri()->withUserInfo(''); - + + # minimum permission is that user is allowed to update his own content. This will completely disable the block-editor + if(!$this->c->acl->isAllowed($_SESSION['role'], 'mycontent', 'update')) + { + return $response->withJson(array('data' => false, 'errors' => 'You are not allowed to edit content.'), 403); + } + # set structure if(!$this->setStructure($draft = true)){ return $response->withJson(array('data' => false, 'errors' => $this->errors), 404); } /* set item */ if(!$this->setItem()){ return $response->withJson($this->errors, 404); } + + # if user has no right to delete content from others (eg admin or editor) + if(!$this->c->acl->isAllowed($_SESSION['role'], 'content', 'update')) + { + # check ownership. This code should nearly never run, because there is no button/interface to trigger it. + if(!$this->checkContentOwnership()) + { + return $response->withJson(array('data' => false, 'errors' => 'You are not allowed to delete content.'), 403); + } + } # set the status for published and drafted $this->setPublishStatus(); @@ -778,12 +909,27 @@ class ArticleApiController extends ContentController $this->params = $request->getParams(); $this->uri = $request->getUri()->withUserInfo(''); + if(!$this->c->acl->isAllowed($_SESSION['role'], 'mycontent', 'update')) + { + return $response->withJson(array('data' => false, 'errors' => 'You are not allowed to edit content.'), 403); + } + # set structure if(!$this->setStructure($draft = true)){ return $response->withJson(array('data' => false, 'errors' => $this->errors), 404); } /* set item */ if(!$this->setItem()){ return $response->withJson($this->errors, 404); } - + + # if user has no right to delete content from others (eg admin or editor) + if(!$this->c->acl->isAllowed($_SESSION['role'], 'content', 'update')) + { + # check ownership. This code should nearly never run, because there is no button/interface to trigger it. + if(!$this->checkContentOwnership()) + { + return $response->withJson(array('data' => false, 'errors' => 'You are not allowed to delete content.'), 403); + } + } + # set the status for published and drafted $this->setPublishStatus(); diff --git a/system/Controllers/AuthController.php b/system/Controllers/AuthController.php index b8c8921..b908f02 100644 --- a/system/Controllers/AuthController.php +++ b/system/Controllers/AuthController.php @@ -125,10 +125,15 @@ class AuthController extends Controller $yaml->updateYaml('settings/users', '.logins', $logins); } - $settings = $this->c->get('settings'); - $editor = (isset($settings['editor']) && $settings['editor'] == 'visual') ? 'visual' : 'raw'; - - return $response->withRedirect($this->c->router->pathFor('content.' . $editor)); + # if user is allowed to view content-area + if($this->c->acl->isAllowed($userdata['userrole'], 'content', 'view')) + { + $settings = $this->c->get('settings'); + $editor = (isset($settings['editor']) && $settings['editor'] == 'visual') ? 'visual' : 'raw'; + + return $response->withRedirect($this->c->router->pathFor('content.' . $editor)); + } + return $response->withRedirect($this->c->router->pathFor('user.account')); } } diff --git a/system/Controllers/BlockApiController.php b/system/Controllers/BlockApiController.php index 1d55d0d..07d6857 100644 --- a/system/Controllers/BlockApiController.php +++ b/system/Controllers/BlockApiController.php @@ -21,6 +21,12 @@ class BlockApiController extends ContentController $this->params = $request->getParams(); $this->uri = $request->getUri()->withUserInfo(''); + # minimum permission is that user is allowed to update his own content + if(!$this->c->acl->isAllowed($_SESSION['role'], 'mycontent', 'update')) + { + return $response->withJson(array('data' => false, 'errors' => ['message' => 'You are not allowed to publish content.']), 403); + } + /* validate input */ if(!$this->validateBlockInput()){ return $response->withJson($this->errors,422); } @@ -30,6 +36,16 @@ class BlockApiController extends ContentController /* set item */ if(!$this->setItem()){ return $response->withJson($this->errors, 404); } + # if user has no right to delete content from others (eg admin or editor) + if(!$this->c->acl->isAllowed($_SESSION['role'], 'content', 'update')) + { + # check ownership. This code should nearly never run, because there is no button/interface to trigger it. + if(!$this->checkContentOwnership()) + { + return $response->withJson(array('data' => false, 'errors' => ['message' => 'You are not allowed to edit content.']), 403); + } + } + # set the status for published and drafted $this->setPublishStatus(); @@ -77,7 +93,7 @@ class BlockApiController extends ContentController elseif(($this->params['block_id'] == 0) OR !isset($pageMarkdown[$this->params['block_id']])) { # if the block does not exists, return an error - return $response->withJson(array('data' => false, 'errors' => 'The ID of the content-block is wrong.'), 404); + return $response->withJson(array('data' => false, 'errors' => ['message' => 'The ID of the content-block is wrong.']), 404); } else { @@ -201,6 +217,12 @@ class BlockApiController extends ContentController $this->params = $request->getParams(); $this->uri = $request->getUri()->withUserInfo(''); + # minimum permission is that user is allowed to update his own content + if(!$this->c->acl->isAllowed($_SESSION['role'], 'mycontent', 'update')) + { + return $response->withJson(array('data' => false, 'errors' => ['message' => 'You are not allowed to publish content.']), 403); + } + /* validate input */ if(!$this->validateBlockInput()){ return $response->withJson($this->errors,422); } @@ -210,6 +232,16 @@ class BlockApiController extends ContentController /* set item */ if(!$this->setItem()){ return $response->withJson($this->errors, 404); } + # if user has no right to delete content from others (eg admin or editor) + if(!$this->c->acl->isAllowed($_SESSION['role'], 'content', 'update')) + { + # check ownership. This code should nearly never run, because there is no button/interface to trigger it. + if(!$this->checkContentOwnership()) + { + return $response->withJson(array('data' => false, 'errors' => ['message' => 'You are not allowed to edit content.']), 403); + } + } + # set the status for published and drafted $this->setPublishStatus(); @@ -249,7 +281,7 @@ class BlockApiController extends ContentController if(!isset($pageMarkdown[$this->params['block_id']])) { # if the block does not exists, return an error - return $response->withJson(array('data' => false, 'errors' => 'The ID of the content-block is wrong.'), 404); + return $response->withJson(array('data' => false, 'errors' => ['message' => 'The ID of the content-block is wrong.']), 404); } elseif($this->params['block_id'] == 0) { @@ -340,6 +372,12 @@ class BlockApiController extends ContentController $this->params = $request->getParams(); $this->uri = $request->getUri()->withUserInfo(''); + # minimum permission is that user is allowed to update his own content + if(!$this->c->acl->isAllowed($_SESSION['role'], 'mycontent', 'update')) + { + return $response->withJson(array('data' => false, 'errors' => ['message' => 'You are not allowed to publish content.']), 403); + } + # validate input # if(!$this->validateBlockInput()){ return $response->withJson($this->errors,422); } @@ -349,6 +387,16 @@ class BlockApiController extends ContentController # set item if(!$this->setItem()){ return $response->withJson($this->errors, 404); } + # if user has no right to delete content from others (eg admin or editor) + if(!$this->c->acl->isAllowed($_SESSION['role'], 'content', 'update')) + { + # check ownership. This code should nearly never run, because there is no button/interface to trigger it. + if(!$this->checkContentOwnership()) + { + return $response->withJson(array('data' => false, 'errors' => ['message' => 'You are not allowed to delete content.']), 403); + } + } + # set the status for published and drafted $this->setPublishStatus(); @@ -382,7 +430,7 @@ class BlockApiController extends ContentController if(!isset($pageMarkdown[$oldIndex])) { # if the block does not exists, return an error - return $response->withJson(array('data' => false, 'errors' => 'The ID of the content-block is wrong.'), 404); + return $response->withJson(array('data' => false, 'errors' => ['message' => 'The ID of the content-block is wrong.']), 404); } $extract = array_splice($pageMarkdown, $oldIndex, 1); @@ -432,6 +480,12 @@ class BlockApiController extends ContentController $this->params = $request->getParams(); $this->uri = $request->getUri()->withUserInfo(''); $errors = false; + + # minimum permission is that user is allowed to update his own content + if(!$this->c->acl->isAllowed($_SESSION['role'], 'mycontent', 'update')) + { + return $response->withJson(array('data' => false, 'errors' => ['message' => 'You are not allowed to publish content.']), 403); + } # set structure if(!$this->setStructure($draft = true)){ return $response->withJson(array('data' => false, 'errors' => $this->errors), 404); } @@ -439,6 +493,16 @@ class BlockApiController extends ContentController # set item if(!$this->setItem()){ return $response->withJson($this->errors, 404); } + # if user has no right to delete content from others (eg admin or editor) + if(!$this->c->acl->isAllowed($_SESSION['role'], 'content', 'update')) + { + # check ownership. This code should nearly never run, because there is no button/interface to trigger it. + if(!$this->checkContentOwnership()) + { + return $response->withJson(array('data' => false, 'errors' => ['message' => 'You are not allowed to delete content.']), 403); + } + } + # set the status for published and drafted $this->setPublishStatus(); @@ -616,7 +680,7 @@ class BlockApiController extends ContentController return $response->withJson(array('errors' => false)); } - return $response->withJson(array('errors' => 'could not store image to temporary folder')); + return $response->withJson(array('errors' => ['message' => 'could not store image to temporary folder'])); } public function createFile(Request $request, Response $response, $args) @@ -632,7 +696,7 @@ class BlockApiController extends ContentController $allowedMimes = $this->getAllowedMtypes(); if(!in_array($mtype, $allowedMimes)) { - return $response->withJson(array('errors' => 'File-type is not allowed')); + return $response->withJson(array('errors' => ['message' => 'File-type is not allowed'])); } # sanitize file name @@ -653,7 +717,7 @@ class BlockApiController extends ContentController return $response->withJson(array('errors' => false, 'name' => $name)); } - return $response->withJson(array('errors' => 'could not store file to temporary folder')); + return $response->withJson(array('errors' => ['message' => 'could not store file to temporary folder'])); } public function publishImage(Request $request, Response $response, $args) @@ -681,7 +745,7 @@ class BlockApiController extends ContentController return $this->updateBlock($request, $response, $args); } - return $response->withJson(array('errors' => 'could not store image to media folder')); + return $response->withJson(array('errors' => ['message' => 'could not store image to media folder'])); } public function deleteImage(Request $request, Response $response, $args) @@ -692,7 +756,7 @@ class BlockApiController extends ContentController if(!isset($this->params['name'])) { - return $response->withJson(array('errors' => 'image name is missing')); + return $response->withJson(array('errors' => ['message' => 'image name is missing'])); } $imageProcessor = new ProcessImage($this->settings['images']); @@ -714,7 +778,7 @@ class BlockApiController extends ContentController if(!isset($this->params['name'])) { - return $response->withJson(array('errors' => 'file name is missing')); + return $response->withJson(array('errors' => ['message' => 'file name is missing'])); } $fileProcessor = new ProcessFile(); @@ -725,7 +789,7 @@ class BlockApiController extends ContentController return $response->withJson(array('errors' => false)); } - return $response->withJson(array('errors' => 'could not delete the file')); + return $response->withJson(array('errors' => ['message' => 'could not delete the file'])); } public function saveVideoImage(Request $request, Response $response, $args) @@ -803,7 +867,7 @@ class BlockApiController extends ContentController return $this->updateBlock($request, $response, $args); } - return $response->withJson(array('errors' => 'could not store the preview image')); + return $response->withJson(array('errors' => ['message' => 'could not store the preview image'])); } private function getAllowedMtypes() @@ -828,6 +892,7 @@ class BlockApiController extends ContentController 'application/pdf', 'image/png', 'image/jpeg', + 'image/jpg', 'image/gif', 'image/svg+xml', 'font/*', diff --git a/system/Controllers/ContentBackendController.php b/system/Controllers/ContentBackendController.php index de15c06..2d8b24a 100644 --- a/system/Controllers/ContentBackendController.php +++ b/system/Controllers/ContentBackendController.php @@ -32,6 +32,9 @@ class ContentBackendController extends ContentController # set item if(!$this->setItem()){ return $this->renderIntern404($response, array( 'navigation' => $this->structure, 'settings' => $this->settings, 'content' => $this->errors )); } + + # we have to check ownership here to use it for permission-check in tempates + $this->checkContentOwnership(); # get the breadcrumb (here we need it only to mark the actual item active in navigation) $breadcrumb = isset($this->item->keyPathArray) ? Folder::getBreadcrumb($this->structure, $this->item->keyPathArray) : false; @@ -75,7 +78,16 @@ class ContentBackendController extends ContentController } } - return $this->render($response, 'editor/editor-raw.twig', array('navigation' => $this->structure, 'homepage' => $this->homepage, 'title' => $title, 'content' => $content, 'item' => $this->item, 'settings' => $this->settings )); + return $this->render($response, 'editor/editor-raw.twig', array( + 'acl' => $this->c->acl, + 'mycontent' => $this->mycontent, + 'navigation' => $this->structure, + 'homepage' => $this->homepage, + 'title' => $title, + 'content' => $content, + 'item' => $this->item, + 'settings' => $this->settings + )); } /** @@ -101,6 +113,9 @@ class ContentBackendController extends ContentController # set item if(!$this->setItem()){ return $this->renderIntern404($response, array( 'navigation' => $this->structure, 'settings' => $this->settings, 'content' => $this->errors )); } + # we have to check ownership here to use it for permission-check in tempates + $this->checkContentOwnership(); + # set the status for published and drafted $this->setPublishStatus(); @@ -153,7 +168,16 @@ class ContentBackendController extends ContentController unset($content[0]); } - return $this->render($response, 'editor/editor-blox.twig', array('navigation' => $this->structure, 'homepage' => $this->homepage, 'title' => $title, 'content' => $content, 'item' => $this->item, 'settings' => $this->settings )); + return $this->render($response, 'editor/editor-blox.twig', array( + 'acl' => $this->c->acl, + 'mycontent' => $this->mycontent, + 'navigation' => $this->structure, + 'homepage' => $this->homepage, + 'title' => $title, + 'content' => $content, + 'item' => $this->item, + 'settings' => $this->settings + )); } public function showEmpty(Request $request, Response $response, $args) diff --git a/system/Controllers/ContentController.php b/system/Controllers/ContentController.php index 87dc47e..fe10875 100644 --- a/system/Controllers/ContentController.php +++ b/system/Controllers/ContentController.php @@ -10,6 +10,7 @@ use Typemill\Models\Folder; use Typemill\Models\Write; use Typemill\Models\WriteCache; use Typemill\Models\WriteYaml; +use Typemill\Models\WriteMeta; abstract class ContentController { @@ -51,6 +52,9 @@ abstract class ContentController # holds the content of the page protected $content; + + # holds the ownership (my content or not my content) + protected $mycontent = false; public function __construct(ContainerInterface $c) { @@ -432,4 +436,19 @@ abstract class ContentController $this->content = $content; return true; } + + protected function checkContentOwnership() + { + # get page meta + $writeMeta = new writeMeta(); + $pagemeta = $writeMeta->getPageMeta($this->settings, $this->item); + + # owner assertion, not + if(isset($pagemeta['meta']['owner']) && $pagemeta['meta']['owner'] == $_SESSION['user']) + { + $this->mycontent = true; + return true; + } + return false; + } } \ No newline at end of file diff --git a/system/Controllers/MediaApiController.php b/system/Controllers/MediaApiController.php index 90caf6a..7c3470d 100644 --- a/system/Controllers/MediaApiController.php +++ b/system/Controllers/MediaApiController.php @@ -207,6 +207,12 @@ class MediaApiController extends ContentController $this->params = $request->getParams(); $this->uri = $request->getUri()->withUserInfo(''); + # minimum permission is that user is allowed to delete content + if(!$this->c->acl->isAllowed($_SESSION['role'], 'content', 'delete')) + { + return $response->withJson(array('data' => false, 'errors' => 'You are not allowed to delete images.'), 403); + } + if(!isset($this->params['name'])) { return $response->withJson(['errors' => 'image name is missing'],500); @@ -232,6 +238,12 @@ class MediaApiController extends ContentController $this->params = $request->getParams(); $this->uri = $request->getUri()->withUserInfo(''); + # minimum permission is that user is allowed to delete content + if(!$this->c->acl->isAllowed($_SESSION['role'], 'content', 'delete')) + { + return $response->withJson(array('data' => false, 'errors' => 'You are not allowed to delete files.'), 403); + } + if(!isset($this->params['name'])) { return $response->withJson(['errors' => 'file name is missing'],500); diff --git a/system/Controllers/MetaApiController.php b/system/Controllers/MetaApiController.php index d901169..05dd392 100644 --- a/system/Controllers/MetaApiController.php +++ b/system/Controllers/MetaApiController.php @@ -134,6 +134,12 @@ class MetaApiController extends ContentController $this->params = $request->getParams(); $this->uri = $request->getUri()->withUserInfo(''); + # minimum permission is that user is allowed to update his own content + if(!$this->c->acl->isAllowed($_SESSION['role'], 'mycontent', 'update')) + { + return $response->withJson(array('data' => false, 'errors' => ['message' => 'You are not allowed to update content.']), 403); + } + $tab = isset($this->params['tab']) ? $this->params['tab'] : false; $metaInput = isset($this->params['data']) ? $this->params['data'] : false ; $objectName = 'meta'; @@ -150,6 +156,16 @@ class MetaApiController extends ContentController # set item if(!$this->setItem()){ return $response->withJson($this->errors, 404); } + # if user has no right to delete content from others (eg admin or editor) + if(!$this->c->acl->isAllowed($_SESSION['role'], 'content', 'update')) + { + # check ownership. This code should nearly never run, because there is no button/interface to trigger it. + if(!$this->checkContentOwnership()) + { + return $response->withJson(array('data' => false, 'errors' => ['message' => 'You are not allowed to edit content.']), 403); + } + } + # if item is a folder if($this->item->elementType == "folder") { diff --git a/system/Controllers/SettingsController.php b/system/Controllers/SettingsController.php index 11501b8..09db70f 100644 --- a/system/Controllers/SettingsController.php +++ b/system/Controllers/SettingsController.php @@ -9,6 +9,8 @@ use Typemill\Models\Validation; use Typemill\Models\User; use Typemill\Models\ProcessFile; use Typemill\Models\ProcessImage; +use Typemill\Events\OnUserfieldsLoaded; +use Typemill\Events\OnSystemnaviLoaded; class SettingsController extends Controller { @@ -26,26 +28,28 @@ class SettingsController extends Controller $locale = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2) : 'en'; $users = $user->getUsers(); $route = $request->getAttribute('route'); + $navigation = $this->getNavigation(); - return $this->render($response, 'settings/system.twig', array('settings' => $settings, 'copyright' => $copyright, 'languages' => $languages, 'locale' => $locale, 'formats' => $defaultSettings['formats'] ,'users' => $users, 'route' => $route->getName() )); + # set navigation active + $navigation['System']['active'] = true; + + return $this->render($response, 'settings/system.twig', array( + 'settings' => $settings, + 'acl' => $this->c->acl, + 'navigation' => $navigation, + 'copyright' => $copyright, + 'languages' => $languages, + 'locale' => $locale, + 'formats' => $defaultSettings['formats'], + 'users' => $users, + 'route' => $route->getName() + )); } public function saveSettings($request, $response, $args) { if($request->isPost()) - { - $referer = $request->getHeader('HTTP_REFERER'); - $uri = $request->getUri()->withUserInfo(''); - $base_url = $uri->getBaseUrl(); - - /* security, users should not be able to fake post with settings from other typemill pages. - if(!isset($referer[0]) OR $referer[0] !== $base_url . '/tm/settings' ) - { - $this->c->flash->addMessage('error', 'illegal referer'); - return $response->withRedirect($this->c->router->pathFor('settings.show')); - } - */ - + { $settings = \Typemill\Settings::getUserSettings(); $defaultSettings = \Typemill\Settings::getDefaultSettings(); $params = $request->getParams(); @@ -232,9 +236,19 @@ class SettingsController extends Controller } /* add the users for navigation */ - $route = $request->getAttribute('route'); + $route = $request->getAttribute('route'); + $navigation = $this->getNavigation(); - return $this->render($response, 'settings/themes.twig', array('settings' => $userSettings, 'themes' => $themedata, 'route' => $route->getName() )); + # set navigation active + $navigation['Themes']['active'] = true; + + return $this->render($response, 'settings/themes.twig', array( + 'settings' => $userSettings, + 'acl' => $this->c->acl, + 'navigation' => $navigation, + 'themes' => $themedata, + 'route' => $route->getName() + )); } public function showPlugins($request, $response, $args) @@ -300,8 +314,18 @@ class SettingsController extends Controller } $route = $request->getAttribute('route'); + $navigation = $this->getNavigation(); + + # set navigation active + $navigation['Plugins']['active'] = true; - return $this->render($response, 'settings/plugins.twig', array('settings' => $userSettings, 'plugins' => $plugins, 'route' => $route->getName() )); + return $this->render($response, 'settings/plugins.twig', array( + 'settings' => $userSettings, + 'acl' => $this->c->acl, + 'navigation' => $navigation, + 'plugins' => $plugins, + 'route' => $route->getName() + )); } /************************************* @@ -311,19 +335,7 @@ class SettingsController extends Controller public function saveThemes($request, $response, $args) { if($request->isPost()) - { - $referer = $request->getHeader('HTTP_REFERER'); - $uri = $request->getUri()->withUserInfo(''); - $base_url = $uri->getBaseUrl(); - - /* users should not be able to fake post with settings from other typemill pages. - if(!isset($referer[0]) OR $referer[0] !== $base_url . '/tm/themes' ) - { - $this->c->flash->addMessage('error', 'illegal referer'); - return $response->withRedirect($this->c->router->pathFor('themes.show')); - } - */ - + { $userSettings = \Typemill\Settings::getUserSettings(); $params = $request->getParams(); $themeName = isset($params['theme']) ? $params['theme'] : false; @@ -410,18 +422,6 @@ class SettingsController extends Controller { if($request->isPost()) { - $referer = $request->getHeader('HTTP_REFERER'); - $uri = $request->getUri()->withUserInfo(''); - $base_url = $uri->getBaseUrl(); - - /* security, users should not be able to fake post with settings from other typemill pages. - if(!isset($referer[0]) OR $referer[0] !== $base_url . '/tm/plugins' ) - { - $this->c->flash->addMessage('error', 'illegal referer'); - return $response->withRedirect($this->c->router->pathFor('plugins.show')); - } - */ - $userSettings = \Typemill\Settings::getUserSettings(); $pluginSettings = array(); $userInput = $request->getParams(); @@ -481,6 +481,421 @@ class SettingsController extends Controller } } + /*********************** + ** USER MANAGEMENT ** + ***********************/ + + public function showAccount($request, $response, $args) + { + $username = $_SESSION['user']; + + $validate = new Validation(); + + if($validate->username($username)) + { + # get settings + $settings = $this->c->get('settings'); + + # get user with userdata + $user = new User(); + $userdata = $user->getSecureUser($username); + + # instantiate field-builder + $fieldsModel = new Fields(); + + # get the field-definitions + $fieldDefinitions = $this->getUserFields($userdata['userrole']); + + # prepare userdata for field-builder + $userSettings['users']['user'] = $userdata; + + # generate the input form + $userform = $fieldsModel->getFields($userSettings, 'users', 'user', $fieldDefinitions); + + $route = $request->getAttribute('route'); + $navigation = $this->getNavigation(); + + # set navigation active + $navigation['Account']['active'] = true; + + return $this->render($response, 'settings/user.twig', array( + 'settings' => $settings, + 'acl' => $this->c->acl, + 'navigation' => $navigation, + 'usersettings' => $userSettings, // needed for image url in form, will overwrite settings for field-template + 'userform' => $userform, // field model, needed to generate frontend-field + 'userdata' => $userdata, // needed to fill form with data +# 'userrole' => false, // not needed ? +# 'username' => $args['username'], // not needed ? + 'route' => $route->getName() // needed to set link active + )); + } + + $this->c->flash->addMessage('error', 'User does not exists'); + return $response->withRedirect($this->c->router->pathFor('home')); + } + + public function showUser($request, $response, $args) + { + # if user has no rights to watch userlist, then redirect to + if(!$this->c->acl->isAllowed($_SESSION['role'], 'userlist', 'view') && $_SESSION['user'] !== $args['username'] ) + { + return $response->withRedirect($this->c->router->pathFor('user.show', ['username' => $_SESSION['user']] )); + } + + $validate = new Validation(); + + if($validate->username($args['username'])) + { + # get settings + $settings = $this->c->get('settings'); + + # get user with userdata + $user = new User(); + $userdata = $user->getSecureUser($args['username']); + + $username = $userdata['username']; + + # instantiate field-builder + $fieldsModel = new Fields(); + + # get the field-definitions + $fieldDefinitions = $this->getUserFields($userdata['userrole']); + + # prepare userdata for field-builder + $userSettings['users']['user'] = $userdata; + + # generate the input form + $userform = $fieldsModel->getFields($userSettings, 'users', 'user', $fieldDefinitions); + + $route = $request->getAttribute('route'); + $navigation = $this->getNavigation(); + + # set navigation active + $navigation['Users']['active'] = true; + + return $this->render($response, 'settings/user.twig', array( + 'settings' => $settings, + 'acl' => $this->c->acl, + 'navigation' => $navigation, + 'usersettings' => $userSettings, // needed for image url in form, will overwrite settings for field-template + 'userform' => $userform, // field model, needed to generate frontend-field + 'userdata' => $userdata, // needed to fill form with data +# 'userrole' => false, // not needed ? +# 'username' => $args['username'], // not needed ? + 'route' => $route->getName() // needed to set link active + )); + } + + $this->c->flash->addMessage('error', 'User does not exists'); + return $response->withRedirect($this->c->router->pathFor('user.account')); + } + + public function listUser($request, $response) + { + $user = new User(); + $users = $user->getUsers(); + $userdata = array(); + $route = $request->getAttribute('route'); + $settings = $this->c->get('settings'); + $navigation = $this->getNavigation(); + + # set navigation active + $navigation['Users']['active'] = true; + + foreach($users as $username) + { + $userdata[] = $user->getUser($username); + } + + return $this->render($response, 'settings/userlist.twig', array( + 'settings' => $settings, + 'acl' => $this->c->acl, + 'navigation' => $navigation, + 'users' => $users, + 'userdata' => $userdata, + 'route' => $route->getName() + )); + } + + public function newUser($request, $response, $args) + { + $user = new User(); + $users = $user->getUsers(); + $userroles = $this->c->acl->getRoles(); + $route = $request->getAttribute('route'); + $settings = $this->c->get('settings'); + $navigation = $this->getNavigation(); + + # set navigation active + $navigation['Users']['active'] = true; + + return $this->render($response, 'settings/usernew.twig', array( + 'settings' => $settings, + 'acl' => $this->c->acl, + 'navigation' => $navigation, + 'users' => $users, + 'userrole' => $userroles, + 'route' => $route->getName() + )); + } + + public function createUser($request, $response, $args) + { + if($request->isPost()) + { + $params = $request->getParams(); + $user = new User(); + $validate = new Validation(); + $userroles = $this->c->acl->getRoles(); + + if($validate->newUser($params, $userroles)) + { + $userdata = array( + 'username' => $params['username'], + 'email' => $params['email'], + 'userrole' => $params['userrole'], + 'password' => $params['password']); + + $user->createUser($userdata); + + $this->c->flash->addMessage('info', 'Welcome, there is a new user!'); + return $response->withRedirect($this->c->router->pathFor('user.list')); + } + + $this->c->flash->addMessage('error', 'Please correct your input'); + return $response->withRedirect($this->c->router->pathFor('user.new')); + } + } + + public function updateUser($request, $response, $args) + { + + if($request->isPost()) + { + $params = $request->getParams(); + $userdata = $params['user']; + $user = new User(); + $validate = new Validation(); + $userroles = $this->c->acl->getRoles(); + + $redirectRoute = ($userdata['username'] == $_SESSION['user']) ? $this->c->router->pathFor('user.account') : $this->c->router->pathFor('user.show', ['username' => $userdata['username']]); + + # check if user is allowed to view (edit) userlist and other users + if(!$this->c->acl->isAllowed($_SESSION['role'], 'userlist', 'write')) + { + # if an editor tries to update other userdata than its own */ + if($_SESSION['user'] !== $userdata['username']) + { + return $response->withRedirect($this->c->router->pathFor('user.account')); + } + + # non admins cannot change their userrole, so set it to session-value + $userdata['userrole'] = $_SESSION['role']; + } + + # validate standard fields for users + if($validate->existingUser($userdata, $userroles)) + { + # validate custom input fields and return images + $userfields = $this->getUserFields($userdata['userrole']); + $imageFields = $this->validateInput('users', 'user', $userdata, $validate, $userfields); + + if(!empty($imageFields)) + { + $images = $request->getUploadedFiles(); + + if(isset($images['user'])) + { + # set image size + $settings = $this->c->get('settings'); + $settings->replace(['images' => ['live' => ['width' => 500, 'height' => 500]]]); + $imageresult = $this->saveImages($imageFields, $userdata, $settings, $images['user']); + + if(isset($_SESSION['slimFlash']['error'])) + { + return $response->withRedirect($redirectRoute); + } + elseif(isset($imageresult['username'])) + { + $userdata = $imageresult; + } + } + } + + # check for errors and redirect to path, if errors found */ + if(isset($_SESSION['errors'])) + { + $this->c->flash->addMessage('error', 'Please correct the errors'); + return $response->withRedirect($redirectRoute); + } + + if(empty($userdata['password']) AND empty($userdata['newpassword'])) + { + # make sure no invalid passwords go into model + unset($userdata['password']); + unset($userdata['newpassword']); + + $user->updateUser($userdata); + $this->c->flash->addMessage('info', 'Saved all changes'); + return $response->withRedirect($redirectRoute); + } + elseif($validate->newPassword($userdata)) + { + $userdata['password'] = $userdata['newpassword']; + unset($userdata['newpassword']); + + $user->updateUser($userdata); + $this->c->flash->addMessage('info', 'Saved all changes'); + return $response->withRedirect($redirectRoute); + } + } + + $this->c->flash->addMessage('error', 'Please correct your input'); + return $response->withRedirect($redirectRoute); + } + } + + public function deleteUser($request, $response, $args) + { + if($request->isPost()) + { + $params = $request->getParams(); + $validate = new Validation(); + $user = new User(); + + # check if user is allowed to view (edit) userlist and other users + if(!$this->c->acl->isAllowed($_SESSION['role'], 'userlist', 'write')) + { + # if an editor tries to delete other user than its own + if($_SESSION['user'] !== $params['username']) + { + return $response->withRedirect($this->c->router->pathFor('user.account')); + } + } + + if($validate->username($params['username'])) + { + $user->deleteUser($params['username']); + + # if user deleted his own account + if($_SESSION['user'] == $params['username']) + { + session_destroy(); + return $response->withRedirect($this->c->router->pathFor('auth.show')); + } + + $this->c->flash->addMessage('info', 'Say goodbye, the user is gone!'); + return $response->withRedirect($this->c->router->pathFor('user.list')); + } + + $this->c->flash->addMessage('error', 'Ups, we did not find that user'); + return $response->withRedirect($this->c->router->pathFor('user.show', ['username' => $params['username']])); + } + } + + private function getUserFields($role) + { + $fields = []; + $fields['username'] = ['label' => 'Username (read only)', 'type' => 'text', 'readonly' => true]; + $fields['firstname'] = ['label' => 'First Name', 'type' => 'text']; + $fields['lastname'] = ['label' => 'Last Name', 'type' => 'text']; + $fields['email'] = ['label' => 'E-Mail', 'type' => 'text', 'required' => true]; + $fields['userrole'] = ['label' => 'Role', 'type' => 'text', 'readonly' => true]; + $fields['password'] = ['label' => 'Actual Password', 'type' => 'password']; + $fields['newpassword'] = ['label' => 'New Password', 'type' => 'password']; + + # dispatch fields; + $fields = $this->c->dispatcher->dispatch('onUserfieldsLoaded', new OnUserfieldsLoaded($fields))->getData(); + + # only roles who can edit content need profile image and description + if($this->c->acl->isAllowed($role, 'content', 'create')) + { + $newfield['image'] = ['label' => 'Profile-Image', 'type' => 'image']; + $newfield['description'] = ['label' => 'Author-Description (Markdown)', 'type' => 'textarea']; + array_splice($fields,1,0,$newfield); + } + + # Only admin can change userroles + if($this->c->acl->isAllowed($_SESSION['role'], 'userlist', 'write')) + { + $userroles = $this->c->acl->getRoles(); + $options = []; + + # we need associative array to make select-field with key/value work + foreach($userroles as $userrole) + { + $options[$userrole] = $userrole; + } + + $fields['userrole'] = ['label' => 'Role', 'type' => 'select', 'options' => $options]; + } + + $userform = []; + $userform['forms']['fields'] = $fields; + return $userform; + } + + private function getThemes() + { + $themeFolder = $this->c->get('settings')['rootPath'] . $this->c->get('settings')['themeFolder']; + $themeFolderC = scandir($themeFolder); + $themes = array(); + foreach ($themeFolderC as $key => $theme) + { + if (!in_array($theme, array(".",".."))) + { + if (is_dir($themeFolder . DIRECTORY_SEPARATOR . $theme)) + { + $themes[] = $theme; + } + } + } + return $themes; + } + + private function getCopyright() + { + return array( + "©", + "CC-BY", + "CC-BY-NC", + "CC-BY-NC-ND", + "CC-BY-NC-SA", + "CC-BY-ND", + "CC-BY-SA", + "None" + ); + } + + private function getLanguages() + { + return array( + 'en' => 'English', + 'ru' => 'Russian', + 'nl' => 'Dutch, Flemish', + 'de' => 'German', + 'it' => 'Italian', + 'fr' => 'French', + ); + } + + private function getNavigation() + { + $navigation = [ + 'System' => ['routename' => 'settings.show', 'icon' => 'icon-wrench', 'aclresource' => 'system', 'aclprivilege' => 'view'], + 'Themes' => ['routename' => 'themes.show', 'icon' => 'icon-paint-brush', 'aclresource' => 'system', 'aclprivilege' => 'view'], + 'Plugins' => ['routename' => 'plugins.show', 'icon' => 'icon-plug', 'aclresource' => 'system', 'aclprivilege' => 'view'], + 'Account' => ['routename' => 'user.account', 'icon' => 'icon-user', 'aclresource' => 'user', 'aclprivilege' => 'view'], + 'Users' => ['routename' => 'user.list', 'icon' => 'icon-group', 'aclresource' => 'userlist', 'aclprivilege' => 'view'] + ]; + + # dispatch fields; + $navigation = $this->c->dispatcher->dispatch('onSystemnaviLoaded', new OnSystemnaviLoaded($navigation))->getData(); + + return $navigation; + } + private function validateInput($objectType, $objectName, $userInput, $validate, $originalSettings = NULL) { if(!$originalSettings) @@ -543,7 +958,7 @@ class SettingsController extends Controller $imageFieldDefinitions[$fieldName] = $fieldDefinition; } } - if(!$fieldDefinition && $fieldName != 'active') + if(!$fieldDefinition && $objectType != 'users' && $fieldName != 'active') { $_SESSION['errors'][$objectName][$fieldName] = array('This field is not defined!'); } @@ -588,391 +1003,5 @@ class SettingsController extends Controller } } return $userInput; - } - - /*********************** - ** USER MANAGEMENT ** - ***********************/ - - public function showAccount($request, $response, $args) - { - $username = $_SESSION['user']; - - $validate = new Validation(); - - if($validate->username($username)) - { - # get settings - $settings = $this->c->get('settings'); - - # get user with userdata - $user = new User(); - $userdata = $user->getSecureUser($username); - - # instantiate field-builder - $fieldsModel = new Fields(); - - # get the field-definitions - $fieldDefinitions = $this->getUserFields($_SESSION['role']); - - # prepare userdata for field-builder - $userSettings['user'][$username] = $userdata; - - # generate the input form - $userform = $fieldsModel->getFields($userSettings, 'user', $username, $fieldDefinitions); - - $route = $request->getAttribute('route'); - - return $this->render($response, 'settings/user.twig', array( - 'settings' => $settings, - 'usersettings' => $userSettings, // needed for image url in form, will overwrite settings for field-template - 'userform' => $userform, // field model, needed to generate frontend-field - 'userdata' => $userdata, // needed to fill form with data -# 'userrole' => false, // not needed ? -# 'username' => $args['username'], // not needed ? - 'route' => $route->getName() // needed to set link active - )); - - return $this->render($response, 'settings/user.twig', array('settings' => $settings, 'usersettings' => $userSettings, 'userdata' => $userdata, 'userrole' => false, 'username' => $username, 'userform' => $userform, 'route' => $route->getName() )); - } - - $this->c->flash->addMessage('error', 'User does not exists'); - return $response->withRedirect($this->c->router->pathFor('home')); - } - - public function showUser($request, $response, $args) - { - # if user has no rights to watch userlist, then only show his user-entry - if(!$this->c->acl->isAllowed($_SESSION['role'], 'userlist', 'view') && $_SESSION['user'] !== $args['username'] ) - { - return $response->withRedirect($this->c->router->pathFor('user.show', ['username' => $_SESSION['user']] )); - } - - $validate = new Validation(); - - if($validate->username($args['username'])) - { - # get settings - $settings = $this->c->get('settings'); - - # get user with userdata - $user = new User(); - $userdata = $user->getSecureUser($args['username']); - - $username = $userdata['username']; - - # instantiate field-builder - $fieldsModel = new Fields(); - - # get the field-definitions - $fieldDefinitions = $this->getUserFields($userdata['userrole']); - - # prepare userdata for field-builder - $userSettings['user'][$username] = $userdata; - - # generate the input form - $userform = $fieldsModel->getFields($userSettings, 'user', $username, $fieldDefinitions); - - $route = $request->getAttribute('route'); - - return $this->render($response, 'settings/user.twig', array( - 'settings' => $settings, - 'usersettings' => $userSettings, // needed for image url in form, will overwrite settings for field-template - 'userform' => $userform, // field model, needed to generate frontend-field - 'userdata' => $userdata, // needed to fill form with data -# 'userrole' => false, // not needed ? -# 'username' => $args['username'], // not needed ? - 'route' => $route->getName() // needed to set link active - )); - } - - $this->c->flash->addMessage('error', 'User does not exists'); - return $response->withRedirect($this->c->router->pathFor('user.account')); - } - - private function getUserFields($role) - { - $fields = []; - $fields['username'] = ['label' => 'Username (read only)', 'type' => 'text', 'readonly' => true]; - $fields['image'] = ['label' => 'Profile-Image', 'type' => 'image']; - $fields['description'] = ['label' => 'Author-Description (Markdown)', 'type' => 'textarea']; - $fields['firstname'] = ['label' => 'First Name', 'type' => 'text']; - $fields['lastname'] = ['label' => 'Last Name', 'type' => 'text']; - $fields['email'] = ['label' => 'E-Mail', 'type' => 'text', 'required' => true]; - $fields['userrole'] = ['label' => 'Role', 'type' => 'text', 'readonly' => true]; - $fields['password'] = ['label' => 'Actual Password', 'type' => 'password']; - $fields['newpassword'] = ['label' => 'New Password', 'type' => 'password']; - - # dispatch fields; - - # change admin stuff - if($_SESSION['role'] == 'administrator') - { - $userroles = $this->c->acl->getRoles(); - $options = []; - - # we need associative array to make select-field with key/value work - foreach($userroles as $userrole) - { - $options[$userrole] = $userrole; - } - - $fields['userrole'] = ['label' => 'Role', 'type' => 'select', 'options' => $options]; - } - - $userform = []; - $userform['forms']['fields'] = $fields; - return $userform; - } - - public function listUser($request, $response) - { - $user = new User(); - $users = $user->getUsers(); - $userdata = array(); - $route = $request->getAttribute('route'); - $settings = $this->c->get('settings'); - - foreach($users as $username) - { - $userdata[] = $user->getUser($username); - } - - return $this->render($response, 'settings/userlist.twig', array('settings' => $settings, 'users' => $users, 'userdata' => $userdata, 'route' => $route->getName() )); - } - - public function newUser($request, $response, $args) - { - $user = new User(); - $users = $user->getUsers(); - $userrole = $user->getUserroles(); - $route = $request->getAttribute('route'); - $settings = $this->c->get('settings'); - - return $this->render($response, 'settings/usernew.twig', array('settings' => $settings, 'users' => $users, 'userrole' => $userrole, 'route' => $route->getName() )); - } - - public function createUser($request, $response, $args) - { - if($request->isPost()) - { - $referer = $request->getHeader('HTTP_REFERER'); - $uri = $request->getUri()->withUserInfo(''); - $base_url = $uri->getBaseUrl(); - - /* security, users should not be able to fake post with settings from other typemill pages. - if(!isset($referer[0]) OR $referer[0] !== $base_url . '/tm/user/new' ) - { - $this->c->flash->addMessage('error', 'illegal referer'); - return $response->withRedirect($this->c->router->pathFor('user.new')); - } - */ - - $params = $request->getParams(); - $user = new User(); - $validate = new Validation(); - $userroles = $this->c->acl->getRoles(); - - if($validate->newUser($params, $userroles)) - { - $userdata = array( - 'username' => $params['username'], - 'firstname' => $params['firstname'], - 'lastname' => $params['lastname'], - 'email' => $params['email'], - 'userrole' => $params['userrole'], - 'password' => $params['password']); - - $user->createUser($userdata); - - $this->c->flash->addMessage('info', 'Welcome, there is a new user!'); - return $response->withRedirect($this->c->router->pathFor('user.list')); - } - - $this->c->flash->addMessage('error', 'Please correct your input'); - return $response->withRedirect($this->c->router->pathFor('user.new')); - } - } - - public function updateUser($request, $response, $args) - { - - if($request->isPost()) - { - $referer = $request->getHeader('HTTP_REFERER'); - $uri = $request->getUri()->withUserInfo(''); - $base_url = $uri->getBaseUrl(); - - /* security, users should not be able to fake post with settings from other typemill pages. - if(!isset($referer[0]) OR strpos($referer[0], $base_url . '/tm/user/') === false ) - { - $this->c->flash->addMessage('error', 'illegal referer'); - return $response->withRedirect($this->c->router->pathFor('user.list')); - } - */ - - $params = $request->getParams(); - $userdata = $params['user']; - $user = new User(); - $validate = new Validation(); - $userroles = $this->c->acl->getRoles(); - - print_r($params); - die(); - - # check if user is allowed to view (edit) userlist and other users - if(!$this->c->acl->isAllowed($_SESSION['role'], 'userlist', 'view')) - { - # if an editor tries to update other userdata than its own */ - if($_SESSION['user'] !== $userdata['username']) - { - return $response->withRedirect($this->c->router->pathFor('user.account')); - } - - # non admins cannot change his userrole, so set it to session-value - $userdata['userrole'] = $_SESSION['role']; - } - - # validate standard fields for users - if($validate->existingUser($userdata, $userroles)) - { - # validate custom input fields and return images - $userfields = $this->getUserFields($userdata['userrole']); - $imageFields = $this->validateInput('users', 'user', $userdata, $validate, $userfields); - - if(!isset($_SESSION['errors']) && !empty($imageFields)) - { - $images = $request->getUploadedFiles(); - - if(isset($images['user'])) - { - # set image size - $settings = $this->c->get('settings'); - $settings['images']['live'] = ['width' => 500, 'height' => 500]; - $userdata = $this->saveImages($imageFields, $userdata, $settings, $images['user']); - } - } - - # check for errors and redirect to path, if errors found */ - if(isset($_SESSION['errors'])) - { - $this->c->flash->addMessage('error', 'Please correct the errors'); - return $response->withRedirect($this->c->router->pathFor('user.show', ['username' => $userdata['username']])); - } - - if(empty($userdata['password']) AND empty($userdata['newpassword'])) - { - $user->updateUser($userdata); - $this->c->flash->addMessage('info', 'Saved all changes'); - return $response->withRedirect($this->c->router->pathFor('user.show', ['username' => $userdata['username']])); - } - elseif($validate->newPassword($userdata)) - { - $userdata['password'] = $userdata['newpassword']; - unset($userdata['newpassword']); - - $user->updateUser($userdata); - $this->c->flash->addMessage('info', 'Saved all changes'); - return $response->withRedirect($this->c->router->pathFor('user.show', ['username' => $userdata['username']])); - } - } - - $this->c->flash->addMessage('error', 'Please correct your input'); - return $response->withRedirect($this->c->router->pathFor('user.show', ['username' => $userdata['username']])); - } - } - - public function deleteUser($request, $response, $args) - { - if($request->isPost()) - { - $referer = $request->getHeader('HTTP_REFERER'); - $uri = $request->getUri()->withUserInfo(''); - $base_url = $uri->getBaseUrl(); - - /* security, users should not be able to fake post with settings from other typemill pages. - if(!isset($referer[0]) OR strpos($referer[0], $base_url . '/tm/user/') === false ) - { - $this->c->flash->addMessage('error', 'illegal referer'); - return $response->withRedirect($this->c->router->pathFor('user.list')); - } - */ - - $params = $request->getParams(); - $validate = new Validation(); - $user = new User(); - - /* non admins have different update rights */ - if($_SESSION['role'] !== 'administrator') - { - /* if an editor tries to delete other user than its own */ - if($_SESSION['user'] !== $params['username']) - { - return $response->withRedirect($this->c->router->pathFor('user.show', ['username' => $_SESSION['user']] )); - } - } - - if($validate->username($params['username'])) - { - $user->deleteUser($params['username']); - - # if user deleted his own account - if($_SESSION['user'] == $params['username']) - { - session_destroy(); - return $response->withRedirect($this->c->router->pathFor('auth.show')); - } - - $this->c->flash->addMessage('info', 'Say goodbye, the user is gone!'); - return $response->withRedirect($this->c->router->pathFor('user.list')); - } - - $this->c->flash->addMessage('error', 'Ups, we did not find that user'); - return $response->withRedirect($this->c->router->pathFor('user.show', ['username' => $params['username']])); - } - } - - private function getThemes() - { - $themeFolder = $this->c->get('settings')['rootPath'] . $this->c->get('settings')['themeFolder']; - $themeFolderC = scandir($themeFolder); - $themes = array(); - foreach ($themeFolderC as $key => $theme) - { - if (!in_array($theme, array(".",".."))) - { - if (is_dir($themeFolder . DIRECTORY_SEPARATOR . $theme)) - { - $themes[] = $theme; - } - } - } - return $themes; - } - - private function getCopyright() - { - return array( - "©", - "CC-BY", - "CC-BY-NC", - "CC-BY-NC-ND", - "CC-BY-NC-SA", - "CC-BY-ND", - "CC-BY-SA", - "None" - ); - } - - private function getLanguages() - { - return array( - 'en' => 'English', - 'ru' => 'Russian', - 'nl' => 'Dutch, Flemish', - 'de' => 'German', - 'it' => 'Italian', - 'fr' => 'French', - ); - } + } } diff --git a/system/Controllers/SetupController.php b/system/Controllers/SetupController.php index bb764b3..5dd0564 100644 --- a/system/Controllers/SetupController.php +++ b/system/Controllers/SetupController.php @@ -66,11 +66,11 @@ class SetupController extends Controller $validate = new Validation(); $user = new User(); - /* set user as admin */ + # set user as admin $params['userrole'] = 'administrator'; - /* get userroles for validation */ - $userroles = $user->getUserroles(); + # get userroles for validation + $userroles = $this->c->acl->getRoles(); /* validate user */ if($validate->newUser($params, $userroles)) diff --git a/system/Events/OnSystemnaviLoaded.php b/system/Events/OnSystemnaviLoaded.php new file mode 100644 index 0000000..3f8f278 --- /dev/null +++ b/system/Events/OnSystemnaviLoaded.php @@ -0,0 +1,14 @@ +getUser($params['username']); + # make sure passwords are not overwritten + if(isset($params['newpassword'])){ unset($params['newpassword']); } if(isset($params['password'])) { - $params['password'] = $this->generatePassword($params['password']); + if(empty($params['password'])) + { + unset($params['password']); + } + else + { + $params['password'] = $this->generatePassword($params['password']); + } } $update = array_merge($userdata, $params); $this->updateYaml('settings/users', $userdata['username'] . '.yaml', $update); - $_SESSION['user'] = $update['username']; - $_SESSION['role'] = $update['userrole']; + # if user updated his own profile, update session data + if($_SESSION['user'] == $params['username']) + { + $_SESSION['role'] = $update['userrole']; - if(isset($update['firstname'])) - { - $_SESSION['firstname'] = $update['firstname']; - } - if(isset($update['lastname'])) - { - $_SESSION['lastname'] = $update['lastname']; + if(isset($update['firstname'])) + { + $_SESSION['firstname'] = $update['firstname']; + } + if(isset($update['lastname'])) + { + $_SESSION['lastname'] = $update['lastname']; + } } return $userdata['username']; diff --git a/system/Models/WriteMeta.php b/system/Models/WriteMeta.php index f04d7af..e92b8b1 100644 --- a/system/Models/WriteMeta.php +++ b/system/Models/WriteMeta.php @@ -52,11 +52,18 @@ class WriteMeta extends WriteYaml $description = $this->generateDescription($content, $parsedown, $item); + # owner holds the edit-rights + $owner = ''; + if(isset($_SESSION['user'])) + { + $owner = $_SESSION['user']; + } + $author = $settings['author']; if(isset($_SESSION)) { - if(isset($_SESSION['firstname']) && $_SESSION['firstname'] !='' && isset($_SESSION['lastname']) && $_SESSION['lastname'] != '') + if(isset($_SESSION['firstname']) && $_SESSION['firstname'] != '' && isset($_SESSION['lastname']) && $_SESSION['lastname'] != '') { $author = $_SESSION['firstname'] . ' ' . $_SESSION['lastname']; } @@ -71,6 +78,7 @@ class WriteMeta extends WriteYaml 'meta' => [ 'title' => $title, 'description' => $description, + 'owner' => $owner, 'author' => $author, 'created' => date("Y-m-d"), 'time' => date("H-i-s"), @@ -88,6 +96,13 @@ class WriteMeta extends WriteYaml # used by MetaApiController. Do not set title or description in defaults if page is not published yet public function getPageMetaBlank($content, $settings, $item) { + # owner holds the edit-rights + $owner = ''; + if(isset($_SESSION['user'])) + { + $owner = $_SESSION['user']; + } + $author = $settings['author']; if(isset($_SESSION)) @@ -107,6 +122,7 @@ class WriteMeta extends WriteYaml 'meta' => [ 'title' => '', 'description' => '', + 'owner' => $owner, 'author' => $author, 'created' => date("Y-m-d"), 'time' => date("H-i-s"), diff --git a/system/Routes/Web.php b/system/Routes/Web.php index 713e7ae..d129660 100644 --- a/system/Routes/Web.php +++ b/system/Routes/Web.php @@ -36,20 +36,22 @@ $app->get('/tm/login', AuthController::class . ':show')->setName('auth.show')->a $app->post('/tm/login', AuthController::class . ':login')->setName('auth.login')->add(new RedirectIfAuthenticated($container['router'], $container['settings'])); $app->get('/tm/logout', AuthController::class . ':logout')->setName('auth.logout')->add(new RedirectIfUnauthenticated($container['router'], $container['flash'])); -$app->get('/tm/settings', SettingsController::class . ':showSettings')->setName('settings.show')->add(new accessController($container['router'], $container['acl'], 'settings', 'view')); -$app->post('/tm/settings', SettingsController::class . ':saveSettings')->setName('settings.save')->add(new accessController($container['router'], $container['acl'], 'settings', 'update')); -$app->get('/tm/themes', SettingsController::class . ':showThemes')->setName('themes.show')->add(new accessController($container['router'], $container['acl'], 'themes', 'view')); -$app->post('/tm/themes', SettingsController::class . ':saveThemes')->setName('themes.save')->add(new accessController($container['router'], $container['acl'], 'themes', 'update')); +$app->get('/tm/settings', SettingsController::class . ':showSettings')->setName('settings.show')->add(new accessController($container['router'], $container['acl'], 'system', 'view')); +$app->post('/tm/settings', SettingsController::class . ':saveSettings')->setName('settings.save')->add(new accessController($container['router'], $container['acl'], 'system', 'update')); -$app->get('/tm/plugins', SettingsController::class . ':showPlugins')->setName('plugins.show')->add(new accessController($container['router'], $container['acl'], 'plugins', 'view')); -$app->post('/tm/plugins', SettingsController::class . ':savePlugins')->setName('plugins.save')->add(new accessController($container['router'], $container['acl'], 'plugins', 'update')); -$app->get('/tm/user/new', SettingsController::class . ':newUser')->setName('user.new')->add(new accessController($container['router'], $container['acl'], 'users', 'create')); +$app->get('/tm/themes', SettingsController::class . ':showThemes')->setName('themes.show')->add(new accessController($container['router'], $container['acl'], 'system', 'view')); +$app->post('/tm/themes', SettingsController::class . ':saveThemes')->setName('themes.save')->add(new accessController($container['router'], $container['acl'], 'system', 'update')); + +$app->get('/tm/plugins', SettingsController::class . ':showPlugins')->setName('plugins.show')->add(new accessController($container['router'], $container['acl'], 'system', 'view')); +$app->post('/tm/plugins', SettingsController::class . ':savePlugins')->setName('plugins.save')->add(new accessController($container['router'], $container['acl'], 'system', 'update')); + +$app->get('/tm/account', SettingsController::class . ':showAccount')->setName('user.account')->add(new accessController($container['router'], $container['acl'], 'user', 'view')); +$app->get('/tm/user/new', SettingsController::class . ':newUser')->setName('user.new')->add(new accessController($container['router'], $container['acl'], 'user', 'create')); $app->post('/tm/user/create', SettingsController::class . ':createUser')->setName('user.create')->add(new accessController($container['router'], $container['acl'], 'user', 'create')); $app->post('/tm/user/update', SettingsController::class . ':updateUser')->setName('user.update')->add(new accessController($container['router'], $container['acl'], 'user', 'update')); $app->post('/tm/user/delete', SettingsController::class . ':deleteUser')->setName('user.delete')->add(new accessController($container['router'], $container['acl'], 'user', 'delete')); -$app->get('/tm/user/account', SettingsController::class . ':showAccount')->setName('user.account')->add(new accessController($container['router'], $container['acl'], 'user', 'view')); $app->get('/tm/user/{username}', SettingsController::class . ':showUser')->setName('user.show')->add(new accessController($container['router'], $container['acl'], 'user', 'view')); -$app->get('/tm/user', SettingsController::class . ':listUser')->setName('user.list')->add(new accessController($container['router'], $container['acl'], 'userlist', 'view')); +$app->get('/tm/users', SettingsController::class . ':listUser')->setName('user.list')->add(new accessController($container['router'], $container['acl'], 'userlist', 'view')); $app->get('/tm/content/raw[/{params:.*}]', ContentBackendController::class . ':showContent')->setName('content.raw')->add(new accessController($container['router'], $container['acl'], 'content', 'view')); $app->get('/tm/content/visual[/{params:.*}]', ContentBackendController::class . ':showBlox')->setName('content.visual')->add(new accessController($container['router'], $container['acl'], 'content', 'view')); diff --git a/system/Settings.php b/system/Settings.php index 1e8eb16..cc29259 100644 --- a/system/Settings.php +++ b/system/Settings.php @@ -190,32 +190,29 @@ class Settings public static function loadResources() { return ['content', + 'mycontent', 'user', 'userlist', - 'settings', - 'themes', - 'plugins']; + 'system']; } public static function loadRolesAndPermissions() { - $guest['name'] = 'guest'; - $guest['inherits'] = NULL; - $guest['permissions'] = []; - $member['name'] = 'member'; - $member['inherits'] = 'guest'; + $member['inherits'] = NULL; $member['permissions'] = ['user' => ['view','update','delete']]; $author['name'] = 'author'; $author['inherits'] = 'member'; - $author['permissions'] = ['content' => ['view','create', 'update', 'delete']]; + $author['permissions'] = ['mycontent' => ['view', 'create', 'update'], + 'content' => ['view']]; $editor['name'] = 'editor'; $editor['inherits'] = 'author'; - $editor['permissions'] = ['content' => ['publish', 'depublish']]; + $editor['permissions'] = [ 'mycontent' => ['delete', 'publish', 'unpublish'], + 'content' => ['create', 'update', 'delete', 'publish', 'unpublish']]; - return [$guest, $member, $author, $editor]; + return [$member, $author, $editor]; } public static function createAcl($roles, $resources) @@ -235,7 +232,8 @@ class Settings foreach($roles as $role) { $acl->addRole(new Role($role['name']), $role['inherits']); - foreach($role['permissions'] as $resource => $permissions) + + foreach($role['permissions'] as $resource => $permissions) { $acl->allow($role['name'], $resource, $permissions); } diff --git a/system/Translations.php b/system/Translations.php index 7d010be..3bd1abf 100644 --- a/system/Translations.php +++ b/system/Translations.php @@ -9,7 +9,7 @@ class Translations $yaml = new Models\WriteYaml(); $settings = $yaml->getYaml('settings', 'settings.yaml'); - if($settings === FALSE){ + if(!isset($settings['language'])){ $language = \Typemill\Settings::whichLanguage(); } else { $language = $settings['language']; diff --git a/system/author/css/style.css b/system/author/css/style.css index 8101f69..7911176 100644 --- a/system/author/css/style.css +++ b/system/author/css/style.css @@ -720,6 +720,9 @@ li.row{ width: 100%; box-sizing: border-box; } +li.row.header{ + display:none; +} li.row ul{ background: #f9f8f6; margin: 5px 0; @@ -738,6 +741,15 @@ li.col.username, li.col.email, li.col.userrole, li.col.edit{ li.col.username{ border-top: 2px solid #70c1b3; } +li.col:before{ + width: 25%; + font-weight:900; + display:inline-block; +} +li.col.username:before{content:"User: ";} +li.col.userrole:before{content:"Role: ";} +li.col.email:before{content:"Mail: ";} +li.col.edit:before{content:"Link: ";} .col.username,.col.email,.col.userrole, .col.edit{ width: 100%; } @@ -2781,6 +2793,23 @@ footer a:focus, footer a:hover, footer a:active margin-top: 10px; margin-bottom: 40px; } + li.row.header{ + display: block; + } + li.row.header ul{ + color: #fff; + background: #70c1b3; + } + li.col.username, li.col.email, li.col.userrole, li.col.edit{ + border: 1px solid #fff; + } + li.col.username{ + border-top: 2px solid #70c1b3; + } + li.col:before{ + width: 0%; + display:none; + } li.row ul{ margin: 0px; } @@ -2789,10 +2818,10 @@ footer a:focus, footer a:hover, footer a:active } .col.edit{ width: 10%; - } + } li.col.username{ border-top: 0px; - border-left: 2px solid #70c1b3; + border-left: 0px solid #70c1b3; } .buttonset{ width: 76%; diff --git a/system/author/editor/editor-blox.twig b/system/author/editor/editor-blox.twig index fb48f19..5a037d5 100644 --- a/system/author/editor/editor-blox.twig +++ b/system/author/editor/editor-blox.twig @@ -5,6 +5,8 @@
+ {% if (acl.isAllowed(get_role(), 'content', 'update')) or ( (mycontent) and (acl.isAllowed(get_role(), 'mycontent', 'update')) ) %} +
- - +
+ + + + + + + +
+ + {% endif %} -
-
diff --git a/system/author/editor/editor-raw.twig b/system/author/editor/editor-raw.twig index 0b9c042..c21a2ca 100644 --- a/system/author/editor/editor-raw.twig +++ b/system/author/editor/editor-raw.twig @@ -5,6 +5,8 @@
+ {% if (acl.isAllowed(get_role(), 'content', 'update')) or ( (mycontent) and (acl.isAllowed(get_role(), 'mycontent', 'update')) ) %} +
- + {% if (acl.isAllowed(get_role(), 'content', 'update')) or ( (mycontent) and (acl.isAllowed(get_role(), 'mycontent', 'update')) ) %} + + {% endif %} + {% if (acl.isAllowed(get_role(), 'content', 'publish')) or ( (mycontent) and (acl.isAllowed(get_role(), 'mycontent', 'publish')) ) %} + + {% endif %} + {% if (acl.isAllowed(get_role(), 'content', 'update')) or ( (mycontent) and (acl.isAllowed(get_role(), 'mycontent', 'update')) ) %} + + {% endif %}
- - - {{ __('raw mode') }}{{ __('raw') }} - {{ __('visual mode') }}{{ __('visual') }} + {% if (acl.isAllowed(get_role(), 'content', 'unpublish')) or ( (mycontent) and (acl.isAllowed(get_role(), 'mycontent', 'unpublish')) ) %} + + {% endif %} + {% if (acl.isAllowed(get_role(), 'content', 'delete')) or ( (mycontent) and (acl.isAllowed(get_role(), 'mycontent', 'delete')) ) %} + + {% endif %} + {% if (acl.isAllowed(get_role(), 'content', 'update')) or ( (mycontent) and (acl.isAllowed(get_role(), 'mycontent', 'update')) ) %} + {{ __('raw mode') }}{{ __('raw') }} + {{ __('visual mode') }}{{ __('visual') }} + {% endif %}
- - -
- - - {% if errors.firstname %} - {{ errors.firstname | first }} - {% endif %} -
- -
- - - {% if errors.lastname %} - {{ errors.lastname | first }} - {% endif %} -
- -
- - - {% if errors.email %} - {{ errors.email | first }} - {% endif %} -
-
+ {% if errors.email %} + {{ errors.email | first }} + {% endif %} +
@@ -76,4 +60,4 @@
-{% endblock %} +{% endblock %} \ No newline at end of file