FEATURE: add permissions into widgets and fix few bugs

This commit is contained in:
Michal Kváček
2017-08-24 01:54:58 +02:00
parent e0f5cba9a4
commit b35149ad67
23 changed files with 239 additions and 110 deletions
+5 -4
View File
@@ -71,13 +71,14 @@ abstract class BaseHandler implements BaseModuleHandler
}
}, 10, ['icon' => 'fa fa-fw fa-plus']);
}
$sub->route('widgets.overview', trans('admin/mainMenu.widgetsOverview'), [], 20, ['icon' => 'fa fa-fw fa-list']);
if ($user->can('manage', Widget::class)) {
$sub->route('widgets.overview', trans('admin/mainMenu.widgetsOverview'), [], 20, ['icon' => 'fa fa-fw fa-list']);
}
// menu for widget areas
if ($user->can('manage', WidgetArea::class)) {
$sub->dropdown(trans('admin/mainMenu.widgetAreas'), function ($sub) use ($user) {
if ($user->can('create-widgetareas', WidgetArea::class)) {
if ($user->can('create', WidgetArea::class)) {
$sub->route('widgetareas.new', trans('admin/mainMenu.newWidgetArea'), [], 1, ['icon' => 'fa fa-fw fa-plus']);
}
$sub->route('widgetareas.overview', trans('admin/mainMenu.widgetAreaOverview'), [], 2, ['icon' => 'fa fa-fw fa-list']);
@@ -126,7 +127,7 @@ abstract class BaseHandler implements BaseModuleHandler
if ($user->can('manage', Settings::class)) {
$sub->route('settings.overview', trans('admin/mainMenu.settings'), [], 80, ['icon' => 'fa fa-fw fa-gear']);
$sub->route('permissions.index', trans('admin/mainMenu.permissions'), [], 90, ['icon' => 'fa fa-fw fa-gear']);
$sub->route('permissions.index', trans('admin/mainMenu.permissions'), [], 90, ['icon' => 'fa fa-fw fa-key']);
}
}, 10000, ['icon' => 'fa fa-fw fa-gears']);
});
+9 -1
View File
@@ -1,7 +1,10 @@
<?php
namespace App\CMS\Handlers\Search;
use App\Models\Content\Content as ContentModel;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Auth;
class Content extends Search
{
@@ -10,10 +13,15 @@ class Content extends Search
*
* @param string $term searched word
*
* @return array list of found objects
* @return array|\Illuminate\Database\Eloquent\Collection|Collection|static[]
*/
public function search($term)
{
if (Auth::user()
->cannot('manage', ContentModel::class)) {
return new Collection();
}
$token = $this->tokenize($term);
return ContentModel::where('pageContent', 'LIKE', $token)
+7
View File
@@ -1,7 +1,9 @@
<?php
namespace App\CMS\Handlers\Search;
use App\Models\FileManager\File;
use Illuminate\Support\Collection;
class Files extends Search
{
@@ -24,6 +26,11 @@ class Files extends Search
*/
public function search($term)
{
if (\Auth::user()
->cannot('manage', File::class)) {
return new Collection();
}
$token = $this->tokenize($term);
return File::where('original_filename', 'LIKE', $token)
@@ -3,11 +3,17 @@ namespace App\CMS\Handlers\Search\Presenters;
use App\CMS\Enumerations\ContentStatuses;
use App\CMS\Handlers\Contracts\SearchPresenterHandler;
use App\Models\Content\Content;
class AdminContent implements SearchPresenterHandler
{
public function render($foundItems)
{
if (\Auth::user()
->cannot('manage', Content::class)) {
return null;
}
return view('admin.search.results.content', [
'pages' => $foundItems,
'statuses' => ContentStatuses::getWithTranslations(),
@@ -2,6 +2,7 @@
namespace App\CMS\Handlers\Search\Presenters;
use App\CMS\Handlers\Contracts\SearchPresenterHandler;
use App\Models\FileManager\File;
class AdminFiles implements SearchPresenterHandler
{
@@ -14,6 +15,11 @@ class AdminFiles implements SearchPresenterHandler
*/
public function render($foundItems)
{
if (\Auth::user()
->cannot('manage', File::class)) {
return null;
}
return view('admin.fileManager.filesTiles', ['files' => $foundItems, 'hideDelete' => true]);
}
}
+7 -3
View File
@@ -13,7 +13,6 @@ class Search extends Controller
{
/**
* Create form for searching
*
* @return $this|\Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function getSearch()
@@ -37,7 +36,6 @@ class Search extends Controller
/**
* Method used for performing search.
*
* This method iterates over all registered search engines and returns results for each engine apart.
*
* @param string $term search text
@@ -60,10 +58,16 @@ class Search extends Controller
// try to find given term
$results = $search->search($term);
$content = $presenter->render($results);
if (is_null($content)) {
continue;
}
// create result object
$resultsParts[$search->getId()] = [
'name' => $search->getName(),
'content' => $presenter->render($results),
'content' => $content,
'count' => count($results)
];
}
@@ -1,17 +1,25 @@
<?php
namespace App\Http\Controllers\Admin\Widgets;
use App\Http\Controllers\Admin\Controller;
use App\Models\Widgets\Widget;
use App\Models\Widgets\WidgetType;
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
class WidgetsOverview extends Controller
{
/**
* Display list of all widgets
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function index()
{
$widgets = Widget::where('language', LaravelLocalization::getCurrentLocale())
->paginate(25);
return view('admin.widgets.overview', ['widgets' => $widgets]);
$widgetTypes = WidgetType::all();
return view('admin.widgets.overview', compact('widgetTypes', 'widgets'));
}
}
+1 -1
View File
@@ -31,6 +31,6 @@ class WidgetAreaPolicy extends BasicPolicy
*/
public function update(User $user, WidgetArea $widgetArea)
{
return $user->hasAbility('edit-widgetareas');
return $user->id == $widgetArea->user_id || $user->hasAbility('edit-widgetareas');
}
}
+2 -2
View File
@@ -36,12 +36,12 @@ class WidgetsPolicy extends BasicPolicy
return $user->id == $widget->user_id || $user->hasAbility('edit-widgets');
}
public function assign(User $user, Widget $widget)
public function assign(User $user)
{
return $user->hasAbility('assign-widgets');
}
public function unassign(User $user, Widget $widget)
public function unassign(User $user)
{
return $user->hasAbility('unassign-widgets');
}