From 6d207b61066bdd143b2a305ed5592920aef4c6e7 Mon Sep 17 00:00:00 2001 From: denisdulici Date: Fri, 14 Feb 2020 15:08:16 +0300 Subject: [PATCH] sort role permissions by title --- app/Http/Controllers/Auth/Roles.php | 34 ++++---------- app/Models/Auth/Permission.php | 15 +++++- app/Models/Setting/Setting.php | 2 +- resources/views/auth/roles/create.blade.php | 52 +++++++++++---------- resources/views/auth/roles/edit.blade.php | 52 +++++++++++---------- 5 files changed, 79 insertions(+), 76 deletions(-) diff --git a/app/Http/Controllers/Auth/Roles.php b/app/Http/Controllers/Auth/Roles.php index 22152f3fc..53a74b561 100644 --- a/app/Http/Controllers/Auth/Roles.php +++ b/app/Http/Controllers/Auth/Roles.php @@ -31,21 +31,14 @@ class Roles extends Controller */ public function create() { - $names = $permissions = []; - $all_permissions = Permission::all(); + $permissions = []; + $actions = ['read', 'create', 'update', 'delete']; - foreach ($all_permissions as $permission) { - // permission code explode - and get permission type - $n = explode('-', $permission->name); - - if (!in_array($n[0], $names)) { - $names[] = $n[0]; - } - - $permissions[$n[0]][] = $permission; + foreach ($actions as $action) { + $permissions[$action] = Permission::action($action)->get()->sortBy('title')->all(); } - return view('auth.roles.create', compact('names', 'permissions')); + return view('auth.roles.create', compact('actions', 'permissions')); } /** @@ -85,21 +78,14 @@ class Roles extends Controller */ public function edit(Role $role) { - $names = $permissions = []; - $all_permissions = Permission::all(); + $permissions = []; + $actions = ['read', 'create', 'update', 'delete']; - foreach ($all_permissions as $permission) { - // permission code explode - and get permission type - $n = explode('-', $permission->name); - - if (!in_array($n[0], $names)) { - $names[] = $n[0]; - } - - $permissions[$n[0]][] = $permission; + foreach ($actions as $action) { + $permissions[$action] = Permission::action($action)->get()->sortBy('title')->all(); } - return view('auth.roles.edit', compact('role', 'names', 'permissions')); + return view('auth.roles.edit', compact('role', 'actions', 'permissions')); } /** diff --git a/app/Models/Auth/Permission.php b/app/Models/Auth/Permission.php index 9d52b986e..b9e74e407 100644 --- a/app/Models/Auth/Permission.php +++ b/app/Models/Auth/Permission.php @@ -46,7 +46,20 @@ class Permission extends LaratrustPermission } /** - * Remove extras from name. + * Scope to only include by action. + * + * @param \Illuminate\Database\Eloquent\Builder $query + * @param string $action + * + * @return \Illuminate\Database\Eloquent\Builder + */ + public function scopeAction($query, $action = 'read') + { + return $query->where('name', 'like', $action . '-%'); + } + + /** + * Transform display name. * * @return string */ diff --git a/app/Models/Setting/Setting.php b/app/Models/Setting/Setting.php index 3c859b5e9..92d6fed1b 100644 --- a/app/Models/Setting/Setting.php +++ b/app/Models/Setting/Setting.php @@ -34,7 +34,7 @@ class Setting extends Eloquent * Scope to only include by prefix. * * @param \Illuminate\Database\Eloquent\Builder $query - * @param $company_id + * @param string $prefix * * @return \Illuminate\Database\Eloquent\Builder */ diff --git a/resources/views/auth/roles/create.blade.php b/resources/views/auth/roles/create.blade.php index df9234f3f..cfa5ef1ab 100644 --- a/resources/views/auth/roles/create.blade.php +++ b/resources/views/auth/roles/create.blade.php @@ -11,7 +11,7 @@ 'files' => true, 'role' => 'form', 'class' => 'form-loading-button', - 'novalidate' => true + 'novalidate' => true, ]) !!}
@@ -33,10 +33,10 @@