FEATURE #2048: another work done on permissions

This commit is contained in:
Michal Kváček
2017-08-11 02:24:44 +02:00
parent 335ec4a167
commit 7f43316602
13 changed files with 69 additions and 49 deletions
@@ -1,19 +1,17 @@
<?php <?php
namespace App\CMS\Handlers; namespace App\CMS\Handlers;
use App\CMS\Contracts\Modules\AppHandler; use App\CMS\Contracts\Modules\AppHandler;
use App\Http\Controllers\Controller; use App\Models\FileManager\File;
use App\Models\Content\Content;
/** /**
* Class Handler * Class Handler
*
* Handler is a class which handles module-specific behaviour which cannot be done by module itself, resp. cannot be * Handler is a class which handles module-specific behaviour which cannot be done by module itself, resp. cannot be
* done by some abstract magic. * done by some abstract magic.
*
* @package App\CMS\Handlers\ * @package App\CMS\Handlers\
*/ */
abstract class Handler extends BaseHandler implements AppHandler abstract class AdminHandler extends BaseHandler implements AppHandler
{ {
public static function getHistoryHandler() public static function getHistoryHandler()
{ {
@@ -22,24 +20,36 @@ abstract class Handler extends BaseHandler implements AppHandler
public static function getExtendedFormSections() public static function getExtendedFormSections()
{ {
return [ $formParts = [
'basicInfo' => trans('admin/contents.basicInfo'), 'basicInfo' => trans('admin/contents.basicInfo'),
'meta' => trans('admin/contents.metaOptions'), 'meta' => trans('admin/contents.metaOptions'),
'publication' => trans('admin/contents.publicationOptions'), 'publication' => trans('admin/contents.publicationOptions'),
'appearance' => trans('admin/contents.appearance'), 'appearance' => trans('admin/contents.appearance'),
'files' => trans('admin/contents.files') 'files' => trans('admin/contents.files')
]; ];
if (\Auth::user()->cannot('upload', File::class)) {
unset($formParts['files']);
}
return $formParts;
} }
public static function getExtendedFormInputsCreate() public static function getExtendedFormInputsCreate()
{ {
return [ $formParts = [
'basicInfo' => 'admin.content.formParts.basicInformation', 'basicInfo' => 'admin.content.formParts.basicInformation',
'meta' => 'admin.content.formParts.metaInformation', 'meta' => 'admin.content.formParts.metaInformation',
'publication' => 'admin.content.formParts.publicationSetup', 'publication' => 'admin.content.formParts.publicationSetup',
'appearance' => 'admin.content.formParts.appearance', 'appearance' => 'admin.content.formParts.appearance',
'files' => 'admin.content.formParts.files' 'files' => 'admin.content.formParts.files'
]; ];
if (\Auth::user()->cannot('upload', File::class)) {
unset($formParts['files']);
}
return $formParts;
} }
public static function getExtendedFormInputsEdit() public static function getExtendedFormInputsEdit()
+3
View File
@@ -6,6 +6,7 @@ use App\CMS\Contracts\Modules\BaseModuleHandler;
use App\CMS\Enumerations\TemplatePathsHumanReadableRootOnly; use App\CMS\Enumerations\TemplatePathsHumanReadableRootOnly;
use App\CMS\Enumerations\WidgetTypes; use App\CMS\Enumerations\WidgetTypes;
use App\Models\ActionLog\ActionLogType; use App\Models\ActionLog\ActionLogType;
use App\Models\Content\Content;
use App\Models\FileManager\File; use App\Models\FileManager\File;
use App\Models\Settings; use App\Models\Settings;
use App\Models\Templates\Template; use App\Models\Templates\Template;
@@ -38,9 +39,11 @@ abstract class BaseHandler implements BaseModuleHandler
* Content pages * Content pages
* Submenus can be registered later * Submenus can be registered later
*/ */
if ($user->can('manage', Content::class)) {
$menu->dropdown(trans('admin/mainMenu.contentPages'), function ($sub) { $menu->dropdown(trans('admin/mainMenu.contentPages'), function ($sub) {
$sub->route('content.overview', trans('admin/mainMenu.contentPageOverview'), [], 10000, ['icon' => 'fa fa-fw fa-list']); $sub->route('content.overview', trans('admin/mainMenu.contentPageOverview'), [], 10000, ['icon' => 'fa fa-fw fa-list']);
}, 20, ['icon' => 'fa fa-fw fa-database']); }, 20, ['icon' => 'fa fa-fw fa-database']);
}
/** /**
* File manager * File manager
@@ -2,7 +2,7 @@
namespace App\Http\Middleware\Admin; namespace App\Http\Middleware\Admin;
use App\CMS\Handlers\Handler; use App\CMS\Handlers\AdminHandler;
use App\CMS\Repositories\Module as ModuleRepository; use App\CMS\Repositories\Module as ModuleRepository;
use Closure; use Closure;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
@@ -26,7 +26,7 @@ class AdminMenuRegistrator
// create menu // create menu
$user = \Auth::user(); $user = \Auth::user();
Handler::registerAdminMenu($user); AdminHandler::registerAdminMenu($user);
$modules = app(ModuleRepository::class)->all(); $modules = app(ModuleRepository::class)->all();
+3 -3
View File
@@ -21,9 +21,9 @@ class ContentPolicy extends BasicPolicy
*/ */
public function update(User $user, Content $content) public function update(User $user, Content $content)
{ {
if (!$user->hasAbility('update-contents-' . $content->module->alias)) { // if (!$user->hasAbility('update-contents-' . $content->module->alias)) {
return false; // return false;
} // }
if ($user->id != $content->user_id) { if ($user->id != $content->user_id) {
return $user->hasAbility('update-contents') && $user->hasAbility('update-all-contents'); return $user->hasAbility('update-contents') && $user->hasAbility('update-all-contents');
+1 -1
View File
@@ -19,7 +19,7 @@ class FilesPolicy extends BasicPolicy
* *
* @return mixed * @return mixed
*/ */
public function create(User $user, File $file) public function upload(User $user)
{ {
return $user->hasAbility('upload-files'); return $user->hasAbility('upload-files');
} }
+2 -2
View File
@@ -4,7 +4,7 @@ namespace Modules\Blog\Article\Handlers;
use App\CMS\Contracts\Content\AdvancedContentModifier; use App\CMS\Contracts\Content\AdvancedContentModifier;
use App\CMS\Contracts\Content\ContentTitles; use App\CMS\Contracts\Content\ContentTitles;
use App\CMS\Contracts\Modules\InstallableModule; use App\CMS\Contracts\Modules\InstallableModule;
use App\CMS\Handlers\Handler; use App\CMS\Handlers\AdminHandler;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Requests\Request; use App\Http\Requests\Request;
use App\Models\ActionLog\ActionLogType; use App\Models\ActionLog\ActionLogType;
@@ -14,7 +14,7 @@ use App\Models\User;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Modules\Blog\Article\Entities\Comment; use Modules\Blog\Article\Entities\Comment;
class Article extends Handler implements ContentTitles, AdvancedContentModifier, InstallableModule class Article extends AdminHandler implements ContentTitles, AdvancedContentModifier, InstallableModule
{ {
public static function getExtendedFormInputsCreate() public static function getExtendedFormInputsCreate()
{ {
@@ -1,10 +1,10 @@
<?php <?php
namespace Modules\Blog\ArticleList\Handlers; namespace Modules\Blog\ArticleList\Handlers;
use App\CMS\Handlers\Handler; use App\CMS\Handlers\AdminHandler;
use App\Models\User; use App\Models\User;
class ArticleList extends Handler class ArticleList extends AdminHandler
{ {
public static function registerAdminMenu(User $user) public static function registerAdminMenu(User $user)
{ {
+2 -2
View File
@@ -4,12 +4,12 @@ namespace Modules\ContactForm\Handlers;
use App\CMS\Contracts\Content\AdvancedContentModifier; use App\CMS\Contracts\Content\AdvancedContentModifier;
use App\CMS\Contracts\Content\ContentTitles; use App\CMS\Contracts\Content\ContentTitles;
use App\CMS\Enumerations\ModulesHandlerToId; use App\CMS\Enumerations\ModulesHandlerToId;
use App\CMS\Handlers\Handler; use App\CMS\Handlers\AdminHandler;
use App\Http\Requests\Request; use App\Http\Requests\Request;
use App\Models\Content\Content; use App\Models\Content\Content;
use App\Models\User; use App\Models\User;
class ContactForm extends Handler implements ContentTitles, AdvancedContentModifier class ContactForm extends AdminHandler implements ContentTitles, AdvancedContentModifier
{ {
public static function getHistoryHandler() public static function getHistoryHandler()
{ {
+4 -4
View File
@@ -3,7 +3,7 @@ namespace Modules\Gallery\Handlers;
use App\CMS\Contracts\Modules\AppHandler; use App\CMS\Contracts\Modules\AppHandler;
use App\CMS\Enumerations\ModulesHandlerToId; use App\CMS\Enumerations\ModulesHandlerToId;
use App\CMS\Handlers\Handler; use App\CMS\Handlers\AdminHandler;
use App\CMS\Handlers\History; use App\CMS\Handlers\History;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Requests\Request; use App\Http\Requests\Request;
@@ -137,7 +137,7 @@ class Gallery implements AppHandler
*/ */
public static function getExtendedFormSections() public static function getExtendedFormSections()
{ {
$sections = Handler::getExtendedFormSections(); $sections = AdminHandler::getExtendedFormSections();
$sections['upload'] = trans('gallery::admin/content.upload'); $sections['upload'] = trans('gallery::admin/content.upload');
@@ -153,7 +153,7 @@ class Gallery implements AppHandler
*/ */
public static function getExtendedFormInputsCreate() public static function getExtendedFormInputsCreate()
{ {
$parts = Handler::getExtendedFormInputsCreate(); $parts = AdminHandler::getExtendedFormInputsCreate();
$parts['upload'] = 'gallery::admin.content.newUpload'; $parts['upload'] = 'gallery::admin.content.newUpload';
return $parts; return $parts;
@@ -168,7 +168,7 @@ class Gallery implements AppHandler
*/ */
public static function getExtendedFormInputsEdit() public static function getExtendedFormInputsEdit()
{ {
$parts = Handler::getExtendedFormInputsCreate(); $parts = AdminHandler::getExtendedFormInputsCreate();
$parts['upload'] = 'gallery::admin.content.editUpload'; $parts['upload'] = 'gallery::admin.content.editUpload';
return $parts; return $parts;
+2 -2
View File
@@ -2,11 +2,11 @@
namespace Modules\StaticPages\Handlers; namespace Modules\StaticPages\Handlers;
use App\CMS\Contracts\Content\ContentTitles; use App\CMS\Contracts\Content\ContentTitles;
use App\CMS\Handlers\Handler; use App\CMS\Handlers\AdminHandler;
use App\Models\Content\Content; use App\Models\Content\Content;
use App\Models\User; use App\Models\User;
class StaticPage extends Handler implements ContentTitles class StaticPage extends AdminHandler implements ContentTitles
{ {
public static function registerAdminMenu(User $user) public static function registerAdminMenu(User $user)
{ {
@@ -4,25 +4,30 @@
class="col-lg-4 col-lg-offset-4 col-md-6 col-md-offset-3 col-sm-12 title-photo text-center"> class="col-lg-4 col-lg-offset-4 col-md-6 col-md-offset-3 col-sm-12 title-photo text-center">
<input type="hidden" id="existingTitlePhoto" value="{{$page->titlePhoto}}" name="existingTitlePhoto"> <input type="hidden" id="existingTitlePhoto" value="{{$page->titlePhoto}}" name="existingTitlePhoto">
<p><img src="@thumbnail($page->titlePhoto)" alt="" /></p> <p><img src="@thumbnail($page->titlePhoto)" alt="" /></p>
@can('upload', \App\Models\FileManager\File::class)
<p> <p>
<a href="javascript:void(0)" id="removeTitlePhoto" class="btn btn-warning" data-toggle="tooltip" <a href="javascript:void(0)" id="removeTitlePhoto" class="btn btn-warning" data-toggle="tooltip"
title="@lang('admin/contents.deleteTitlePhoto')"><i title="@lang('admin/contents.deleteTitlePhoto')"><i
class="fa fa-trash"></i></a> class="fa fa-trash"></i></a>
</p> </p>
@endcan
</div> </div>
</div> </div>
@endif @endif
<div class="row"> @can('upload', \App\Models\FileManager\File::class)
<div class="row">
<div class="col-lg-12"> <div class="col-lg-12">
<label class="control-label"> <label class="control-label">
@lang('admin/contents.uploadTitleImage') @lang('admin/contents.uploadTitleImage')
</label> </label>
<input type="file" id="titlePhotoFile" accept=".jpg,.jpeg,.png" name="titlePhotoFile" class="form-control" /> <input type="file" id="titlePhotoFile" accept=".jpg,.jpeg,.png" name="titlePhotoFile"
class="form-control" />
@include('admin.snippets.hasError', ['field' => 'titlePhotoFile']) @include('admin.snippets.hasError', ['field' => 'titlePhotoFile'])
</div> </div>
</div> </div>
@endcan
@if (count($templates)) @if (count($templates))
<div class="row"> <div class="row">
@@ -59,7 +59,7 @@
<img src="@thumbnail($page->titlePhoto)" class="placeholder" <img src="@thumbnail($page->titlePhoto)" class="placeholder"
alt="{{$page->title}}" /> alt="{{$page->title}}" />
@endif @endif
@endcannot @endcan
</div> </div>
<div class="col-xs-10 col-md-3 col-lg-4"> <div class="col-xs-10 col-md-3 col-lg-4">
@can('update', $page) @can('update', $page)
@@ -1,17 +1,19 @@
<script src="{{asset('/resources/assets/js/vendor/ckeditor/ckeditor.js')}}"></script> <script src="{{asset('/resources/assets/js/vendor/ckeditor/ckeditor.js')}}"></script>
<script type="application/javascript"> <script type="application/javascript">
CKEDITOR.on('instanceCreated', function(e) { CKEDITOR.on ('instanceCreated', function (e) {
e.editor.on('change', function(event) { e.editor.on ('change', function (event) {
var textarea = event.editor.element.$; var textarea = event.editor.element.$;
$(textarea).val(event.editor.getData().trim()); $ (textarea).val (event.editor.getData ().trim ());
$(textarea.form).trigger('checkform.areYouSure'); $ (textarea.form).trigger ('checkform.areYouSure');
}); });
}) })
CKEDITOR.replace ('{{$textareaId}}', { CKEDITOR.replace ('{{$textareaId}}', {
uiColor: "#F5F5F5", uiColor: "#F5F5F5",
@can('upload', \App\Models\FileManager\File::class)
filebrowserUploadUrl: '{{route('upload.postFile', ['_token' => csrf_token()])}}', filebrowserUploadUrl: '{{route('upload.postFile', ['_token' => csrf_token()])}}',
@endcan
forcePasteAsPlainText: true, forcePasteAsPlainText: true,
entities: false, entities: false,
basicEntities: false, basicEntities: false,