diff --git a/app/CMS/Handlers/BaseHandler.php b/app/CMS/Handlers/BaseHandler.php index e52a4ec3..a86169d5 100644 --- a/app/CMS/Handlers/BaseHandler.php +++ b/app/CMS/Handlers/BaseHandler.php @@ -5,7 +5,7 @@ namespace App\CMS\Handlers; use App\CMS\Contracts\Modules\BaseModuleHandler; use App\CMS\Enumerations\TemplatePathsHumanReadableRootOnly; use App\CMS\Enumerations\WidgetTypes; -use App\Models\ActionLog\ActionLogType; +use App\Models\ActionLog\ActionLog; use App\Models\Content\Content; use App\Models\FileManager\File; use App\Models\Settings; @@ -60,7 +60,7 @@ abstract class BaseHandler implements BaseModuleHandler // create list of all widget types $widgets = WidgetTypes::getWithTranslations(); - if (!empty($widgets) && $user->can('create-widgets', Widget::class)) { + if (!empty($widgets) && $user->can('create', Widget::class)) { $sub->dropdown(trans('admin/mainMenu.newWidget'), function ($sub) use ($widgets) { $i = 1; foreach ($widgets as $type => $name) { @@ -117,7 +117,7 @@ abstract class BaseHandler implements BaseModuleHandler } } - if ($user->can('manage', ActionLogType::class)) { + if ($user->can('manage', ActionLog::class)) { $sub->route('log.overview', trans('admin/mainMenu.actionLog'), [], 70, ['icon' => 'fa fa-fw fa-history']); } diff --git a/app/Policies/ActionLogPolicy.php b/app/Policies/ActionLogPolicy.php new file mode 100644 index 00000000..7522281d --- /dev/null +++ b/app/Policies/ActionLogPolicy.php @@ -0,0 +1,11 @@ +hasAbility('create-directories'); + } + + /** + * Determine whether the user can update the directory. + * + * @param \App\Models\User $user + * @param \App\Directory $directory + * @return mixed + */ + public function update(User $user, Directory $directory) + { + return $user->hasAbility('update-directories'); + } +} diff --git a/app/Policies/SettingsPolicy.php b/app/Policies/SettingsPolicy.php new file mode 100644 index 00000000..6b0ff0e5 --- /dev/null +++ b/app/Policies/SettingsPolicy.php @@ -0,0 +1,11 @@ +hasAbility('copy-templates'); + } + + /** + * Determine whether the user can update the template. + * + * @param \App\Models\User $user + * @param \App\Template $template + * + * @return mixed + */ + public function update(User $user, Template $template) + { + return $user->hasAbility('edit-templates'); + } +} diff --git a/app/Policies/WidgetAreaPolicy.php b/app/Policies/WidgetAreaPolicy.php new file mode 100644 index 00000000..f0efc9b4 --- /dev/null +++ b/app/Policies/WidgetAreaPolicy.php @@ -0,0 +1,36 @@ +hasAbility('create-widgetareas'); + } + + /** + * Determine whether the user can update the widgetArea. + * + * @param \App\Models\User $user + * @param \App\WidgetArea $widgetArea + * @return mixed + */ + public function update(User $user, WidgetArea $widgetArea) + { + return $user->hasAbility('edit-widgetareas'); + } +} diff --git a/app/Policies/WidgetsPolicy.php b/app/Policies/WidgetsPolicy.php new file mode 100644 index 00000000..c818f5f0 --- /dev/null +++ b/app/Policies/WidgetsPolicy.php @@ -0,0 +1,48 @@ +hasAbility('create-widgets'); + } + + /** + * Determine whether the user can update the widget. + * + * @param \App\Models\User $user + * @param \App\Widget $widget + * + * @return mixed + */ + public function update(User $user, Widget $widget) + { + return $user->id == $widget->user_id || $user->hasAbility('edit-widgets'); + } + + public function assign(User $user, Widget $widget) + { + return $user->hasAbility('assign-widgets'); + } + + public function unassign(User $user, Widget $widget) + { + return $user->hasAbility('unassign-widgets'); + } +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index b0c4f024..fdf18d8e 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -25,6 +25,7 @@ use App\CMS\Repositories\Module as ModuleRepository; use App\CMS\Repositories\Templates\Template as TemplateRepository; use App\CMS\Widgets\HtmlCode\HtmlCode; use App\CMS\Widgets\Menu\Menu; +use App\CMS\Widgets\SocialButtons\SocialButtons; use Barryvdh\Debugbar\ServiceProvider as DebugBarServiceProvider; use Illuminate\Support\Facades\App; use Illuminate\Support\ServiceProvider; @@ -106,6 +107,7 @@ class AppServiceProvider extends ServiceProvider // register all available widgets $registrator->register(HtmlCode::class); $registrator->register(Menu::class); + $registrator->register(SocialButtons::class); } /** diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index f451ee79..08e6ed49 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -2,14 +2,26 @@ namespace App\Providers; +use App\Models\ActionLog\ActionLog; use App\Models\Content\Content; +use App\Models\FileManager\Directory; use App\Models\FileManager\File; use App\Models\Module; +use App\Models\Settings; +use App\Models\Templates\Template; use App\Models\User; +use App\Models\Widgets\Widget; +use App\Models\Widgets\WidgetArea; +use App\Policies\ActionLogPolicy; use App\Policies\ContentPolicy; +use App\Policies\DirectoriesPolicy; use App\Policies\FilesPolicy; use App\Policies\ModulePolicy; +use App\Policies\SettingsPolicy; +use App\Policies\TemplatePolicy; use App\Policies\UserPolicy; +use App\Policies\WidgetAreaPolicy; +use App\Policies\WidgetsPolicy; use Illuminate\Foundation\Support\Providers\AuthServiceProvider as IlluminateAuthServiceProvider; class AuthServiceProvider extends IlluminateAuthServiceProvider @@ -19,10 +31,17 @@ class AuthServiceProvider extends IlluminateAuthServiceProvider * @var array */ protected $policies = [ - Content::class => ContentPolicy::class, - User::class => UserPolicy::class, - Module::class => ModulePolicy::class, - File::class => FilesPolicy::class, + Content::class => ContentPolicy::class, + User::class => UserPolicy::class, + Module::class => ModulePolicy::class, + File::class => FilesPolicy::class, + ActionLog::class => ActionLogPolicy::class, + Template::class => TemplatePolicy::class, + Directory::class => DirectoriesPolicy::class, + Settings::class => SettingsPolicy::class, + Widget::class => WidgetsPolicy::class, + WidgetArea::class => WidgetAreaPolicy::class, + ActionLog::class => ActionLogPolicy::class, ]; /** diff --git a/resources/lang/cs/widgets/orbitSlider.php b/resources/lang/cs/widgets/orbitSlider.php deleted file mode 100644 index 3ac4aab9..00000000 --- a/resources/lang/cs/widgets/orbitSlider.php +++ /dev/null @@ -1,21 +0,0 @@ - "Dodatečný HTML/JS kód pro slider", -"containerClass" => "HTML třída pro obalový element tohoto widgetu", -"createNew" => "Vytvořit nový", -"description" => "Popis", -"displayBullets" => "Zobrazit odrážky?", -"edit" => "Upravit :name", -"editExisting" => "Uložit", -"extraSettings" => "Další nastavení", -"fullscreen" => "Zobrazit slider na celou obrazovku", -"imagesPerSlide" => "Obrázků na slide", -"name" => "Jméno slideru", -"new" => "Vytvořit nový slider", -"preview" => "Náhled", -"showInFullscreen" => "Zobrazit na celou obrazovku", -"slideContainerClass" => "HTML třída pro každý obrázek ve slideru", -"upload" => "Přidat obrázky do slideru", -"widgetDescription" => "Slider pro obrázky. Tento widget používá Foundation framework a jeho vlastní slider zvaný Orbit. (Nebude fungovat bez Foundation 6!)", -"widgetName" => "Orbit slider", -]; diff --git a/resources/lang/cs/widgets/socialButtons.php b/resources/lang/cs/widgets/socialButtons.php new file mode 100644 index 00000000..987ef446 --- /dev/null +++ b/resources/lang/cs/widgets/socialButtons.php @@ -0,0 +1,16 @@ + "HTML kod", +"containerClass" => "HTML třída pro obalový element tohoto widgetu", +"createNew" => "Vytvořit nový widget", +"description" => "Popis", +"edit" => "Edituji widget :name", +"editExisting" => "Upravit widget", +"name" => "Jméno", +"new" => "Vytvořit nový widget", +"preview" => "Náhled", +"save" => "Uložit", +"successfullyEdited" => "Widget úspěšně upraven", +"widgetDescription" => "Jednoduchý widget pro vkládání sociálních tlačítek.", +"widgetName" => "Sociální tlačítka", +]; diff --git a/resources/views/admin/templates/templatesTiles.blade.php b/resources/views/admin/templates/templatesTiles.blade.php index c532a468..74e3654a 100644 --- a/resources/views/admin/templates/templatesTiles.blade.php +++ b/resources/views/admin/templates/templatesTiles.blade.php @@ -8,28 +8,37 @@ {{str_limit($template->description, 150)}} - @if($isWritable) - - - + @can('copy', $template) + @if($isWritable) + + + + @else + + + + @endif @else - @endif + @endcan + @can('update', $template) @if ($template->editable) - @else + @else @endif + @endcan @empty