diff --git a/app/CMS/Handlers/BaseHandler.php b/app/CMS/Handlers/BaseHandler.php index a2c82693..d5245400 100644 --- a/app/CMS/Handlers/BaseHandler.php +++ b/app/CMS/Handlers/BaseHandler.php @@ -126,6 +126,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']); } }, 10000, ['icon' => 'fa fa-fw fa-gears']); }); diff --git a/app/CMS/Modules/Stubs/Handlers/$Module$Handler.stub b/app/CMS/Modules/Stubs/Handlers/$Module$Handler.stub index 14f31047..f73e053b 100644 --- a/app/CMS/Modules/Stubs/Handlers/$Module$Handler.stub +++ b/app/CMS/Modules/Stubs/Handlers/$Module$Handler.stub @@ -2,10 +2,10 @@ namespace Modules\$ModuleNamespace$\Handlers; -use App\CMS\Handlers\Handler; +use App\CMS\Handlers\BaseHandler; use App\Models\User; -class $Module$Handler extends Handler +class $Module$Handler extends BaseHandler { /** * Register admin menu diff --git a/app/Console/Commands/Modules/CreateNew.php b/app/Console/Commands/Modules/CreateNew.php index 9d27384f..69bfebd8 100644 --- a/app/Console/Commands/Modules/CreateNew.php +++ b/app/Console/Commands/Modules/CreateNew.php @@ -38,6 +38,9 @@ class CreateNew extends Command return; } + if (!is_dir($path)) + mkdir($path); + // copy stub files \File::copyDirectory(config('modules.paths.stubs'), $path); diff --git a/app/Console/Commands/SetTemplate.php b/app/Console/Commands/SetTemplate.php index 4766f4c2..a3192998 100644 --- a/app/Console/Commands/SetTemplate.php +++ b/app/Console/Commands/SetTemplate.php @@ -2,9 +2,9 @@ namespace App\Console\Commands; +use App\CMS\ModuleManager\Installer; +use App\CMS\ModuleManager\Uninstaller; use App\Models\Module; -use App\ModuleManager\Installer; -use App\ModuleManager\Uninstaller; use Illuminate\Console\Command; use Illuminate\Support\Facades\Cache; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; diff --git a/app/Http/Controllers/Admin/Dashboard/Dashboard.php b/app/Http/Controllers/Admin/Dashboard/Dashboard.php index 5dc5eef7..cfacc789 100644 --- a/app/Http/Controllers/Admin/Dashboard/Dashboard.php +++ b/app/Http/Controllers/Admin/Dashboard/Dashboard.php @@ -2,19 +2,19 @@ namespace App\Http\Controllers\Admin\Dashboard; -use App\CMS\Repositories\Module; +use App\CMS\Contracts\Repositories\Module; use App\Http\Controllers\Admin\Controller; use App\Models\Content\Content; -use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; class Dashboard extends Controller { - public function index(Request $request) + public function index() { $contentModules = app(Module::class)->getContentModules(); - if (\Auth::user()->can('manage', Content::class) && !$contentModules->isEmpty()) { + if (\Auth::user() + ->can('manage', Content::class) && !$contentModules->isEmpty()) { return redirect()->route('content.overview'); } else { return redirect()->route('users.detail', ['user' => Auth::user()]); diff --git a/app/Http/Controllers/Admin/Permissions.php b/app/Http/Controllers/Admin/Permissions.php index ca42208f..0f9636a7 100644 --- a/app/Http/Controllers/Admin/Permissions.php +++ b/app/Http/Controllers/Admin/Permissions.php @@ -3,39 +3,41 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; +use App\Http\Requests\Request; use App\Models\Permissions\Permission; -use App\Models\User; -use Illuminate\Http\Request; class Permissions extends Controller { /** - * Update the specified resource in storage. - * - * @param \Illuminate\Http\Request $request - * @param int $id - * - * @return \Illuminate\Http\Response + * Display all permissions + * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ - public function update(Request $request, User $user) + public function index() { - $permissionIds = $request->get('permissions', []); - $permissions = Permission::whereIn('string_id', array_keys($permissionIds)) - ->get(); + $permissions = Permission::whereNull('parent_id')->get(); - \DB::transaction(function () use ($user, $permissions) { - // remove all permissions - $user->permissions() - ->detach(); + return view('admin/permissions.index', compact('permissions')); + } - foreach ($permissions as $permission) { - $user->permissions() - ->attach($permission->id); - } - }); + /** + * Setup default permissions + * + * @param Request $request + * + * @return \Illuminate\Http\RedirectResponse + */ + public function setDefault(Request $request) + { + Permission::where('default', true) + ->update(['default' => false]); + + $permissions = $request->permissions; + + Permission::whereIn('string_id', array_keys($permissions)) + ->update(['default' => true]); return redirect() ->back() - ->with('success', trans('admin/permissions.successfullySet')); + ->with('success', trans('admin/permissions.defaultSuccessfullySet')); } } diff --git a/app/Http/Controllers/Admin/Users/EditUser.php b/app/Http/Controllers/Admin/Users/EditUser.php index 90e34783..b111d1f8 100644 --- a/app/Http/Controllers/Admin/Users/EditUser.php +++ b/app/Http/Controllers/Admin/Users/EditUser.php @@ -8,8 +8,11 @@ use App\CMS\Repositories\Users\User as UserRepository; use App\Events\EditUser as EditUserEvent; use App\Http\Controllers\Admin\Controller; use App\Http\Requests\EditUserRequest; +use App\Http\Requests\Request; +use App\Models\Permissions\Permission; use App\Models\User; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Event; class EditUser extends Controller @@ -82,4 +85,34 @@ class EditUser extends Controller ->back() ->with('success', trans('admin/userManagement.userSuccessfullyEdited')); } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * + * @return \Illuminate\Http\Response + */ + public function setPermissions(Request $request, User $user) + { + $permissionIds = $request->get('permissions', []); + $permissions = Permission::whereIn('string_id', array_keys($permissionIds)) + ->get(); + + DB::transaction(function () use ($user, $permissions) { + // remove all permissions + $user->permissions() + ->detach(); + + foreach ($permissions as $permission) { + $user->permissions() + ->attach($permission->id); + } + }); + + return redirect() + ->back() + ->with('success', trans('admin/permissions.successfullySet')); + } } \ No newline at end of file diff --git a/app/Models/Content/ContentHistory.php b/app/Models/Content/ContentHistory.php index dca25307..8b989674 100644 --- a/app/Models/Content/ContentHistory.php +++ b/app/Models/Content/ContentHistory.php @@ -2,6 +2,7 @@ namespace App\Models\Content; +use App\Models\User; use Illuminate\Database\Eloquent\Model; /** @@ -22,4 +23,9 @@ class ContentHistory extends Model 'old_value' ]; protected $guarded = []; + + public function author() + { + return $this->belongsTo(User::class, 'user_id'); + } } \ No newline at end of file diff --git a/app/Policies/BasicPolicy.php b/app/Policies/BasicPolicy.php index 8788f819..b3f3943a 100644 --- a/app/Policies/BasicPolicy.php +++ b/app/Policies/BasicPolicy.php @@ -9,15 +9,23 @@ use Illuminate\Database\Eloquent\Model; abstract class BasicPolicy { use HandlesAuthorization; - protected $entity; + /** + * Check if user has ability to manage entity before evaluating any other policy method + * @param User $user + * @param $ability + * + * @return bool|null + */ public function before(User $user, $ability) { // check if user can operate on given entity if (!$this->manage($user)) { return false; } + + return null; } /** @@ -27,15 +35,9 @@ abstract class BasicPolicy * * @return bool */ - public function manage(User $user) { - if (!$user->hasAbility($this->entity.'-management')) { -// echo "
"; -// debug_print_backtrace(); -// echo ""; -// die(); - } - - return $user->hasAbility($this->entity.'-management'); + public function manage(User $user) + { + return $user->hasAbility($this->entity . '-management'); } /** @@ -48,6 +50,6 @@ abstract class BasicPolicy */ public function delete(User $user, Model $model) { - return $user->hasAbility('delete-'.$this->entity); + return $user->hasAbility('delete-' . $this->entity); } } diff --git a/config/modules.php b/config/modules.php index 5f975664..529abbaf 100644 --- a/config/modules.php +++ b/config/modules.php @@ -5,6 +5,6 @@ return [ 'paths' => [ 'modules' => base_path('modules'), 'assets' => public_path('modules'), - 'stubs' => base_path('app/CMS/ModuleManager/Stubs'), + 'stubs' => base_path('app/CMS/Modules/Stubs'), ] ]; diff --git a/resources/assets/admin/css/custom.css b/resources/assets/admin/css/custom.css index da4c2214..06aadd48 100644 --- a/resources/assets/admin/css/custom.css +++ b/resources/assets/admin/css/custom.css @@ -22,9 +22,6 @@ a:focus { padding-bottom: 20px !important; } -/*.form-control {*/ - /*margin: .3em 0;*/ -/*}*/ .text-center { text-align: center; diff --git a/resources/lang/cs/admin/mainMenu.php b/resources/lang/cs/admin/mainMenu.php index 5fa6e0ac..cc18fea7 100644 --- a/resources/lang/cs/admin/mainMenu.php +++ b/resources/lang/cs/admin/mainMenu.php @@ -27,4 +27,5 @@ return [ "widgetAreas" => "Plochy pro widgety", "widgets" => "Widgety", "widgetsOverview" => "Všechny widgety", + 'permissions' => 'Přístupová práva' ]; diff --git a/resources/lang/cs/admin/permissions.php b/resources/lang/cs/admin/permissions.php index 61a87f02..b45b9125 100644 --- a/resources/lang/cs/admin/permissions.php +++ b/resources/lang/cs/admin/permissions.php @@ -1,5 +1,8 @@ 'Výchozí oprávnění úspěšně nastavena.', + 'pageTitle' => 'Nastavení výchozích oprávnění', + 'description' => 'Nastavte výchozí oprávnění, která budou přidělena nově vytvořeným uživatelům.', 'successfullySet' => 'Oprávnění úspěšně nastavena.', 'contents' => [ 'management' => 'Správa obsahu', @@ -61,5 +64,6 @@ return [ ], 'settings' => [ 'management' => 'Správa nastavení', - ] + ], + 'save' => 'Uložit výchozí nastavení' ]; \ No newline at end of file diff --git a/resources/views/admin/fileManager/overview.blade.php b/resources/views/admin/fileManager/overview.blade.php index 12959ca6..014b5af3 100644 --- a/resources/views/admin/fileManager/overview.blade.php +++ b/resources/views/admin/fileManager/overview.blade.php @@ -36,7 +36,7 @@ @if (!$directory->is_root) - @can('update', \App\Models\FileManager\Directory::class) + @can('update', $directory)