sort role permissions by title

This commit is contained in:
denisdulici 2020-02-14 15:08:16 +03:00
parent 396b8635ca
commit 6d207b6106
5 changed files with 79 additions and 76 deletions

View File

@ -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'));
}
/**

View File

@ -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
*/

View File

@ -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
*/

View File

@ -11,7 +11,7 @@
'files' => true,
'role' => 'form',
'class' => 'form-loading-button',
'novalidate' => true
'novalidate' => true,
]) !!}
<div class="card">
@ -33,10 +33,10 @@
<div class="nav-wrapper">
<ul class="nav nav-pills nav-fill flex-column flex-md-row" id="tabs-icons-text" role="tablist">
@foreach($names as $name)
@php $active_tab_name = ($name == 'read') ? 'active' : ''; @endphp
@foreach($actions as $action)
@php $active_action_tab = ($action == 'read') ? 'active' : ''; @endphp
<li class="nav-item">
<a class="nav-link mb-sm-3 mb-md-0 {{ $active_tab_name }}" id="tabs-icons-text-1-tab" data-toggle="tab" href="#tab-{{ $name }}" role="tab" aria-controls="tabs-icons-text-1" aria-selected="true">{{ ucwords($name) }}</a>
<a class="nav-link mb-sm-3 mb-md-0 {{ $active_action_tab }}" id="tabs-icons-text-1-tab" data-toggle="tab" href="#tab-{{ $action }}" role="tab" aria-controls="tabs-icons-text-1" aria-selected="true">{{ ucwords($action) }}</a>
</li>
@endforeach
</ul>
@ -45,31 +45,33 @@
<div class="card">
<div class="card-body">
<div class="tab-content">
@foreach($permissions as $code => $code_permissions)
@php $active_tab_code = ($code == 'read') ? 'active' : ''; @endphp
<div class="tab-pane fade show {{ $active_tab_code }}" id="tab-{{ $code }}" role="tabpanel">
<span class="btn btn-primary btn-sm" @click="select('{{ $code }}')">{{ trans('general.select_all') }}</span>
<span class="btn btn-primary btn-sm" @click="unselect('{{ $code }}')">{{ trans('general.unselect_all') }}</span>
@foreach($permissions as $action => $action_permissions)
@php $active_action_tab = ($action == 'read') ? 'active' : ''; @endphp
<div class="tab-pane fade show {{ $active_action_tab }}" id="tab-{{ $action }}" role="tabpanel">
<span class="btn btn-primary btn-sm" @click="select('{{ $action }}')">{{ trans('general.select_all') }}</span>
<span class="btn btn-primary btn-sm" @click="unselect('{{ $action }}')">{{ trans('general.unselect_all') }}</span>
@stack('permissions_input_start')
<div class="form-group {{ $errors->has('permissions') ? 'has-error' : '' }}">
<div class="row pt-4">
@foreach($code_permissions as $item)
<div class="col-md-4 role-list">
<div class="custom-control custom-checkbox">
{{ Form::checkbox('permissions', $item->id, null, ['id' => 'permissions-' . $item->id, 'class' => 'custom-control-input', 'v-model' => 'form.permissions']) }}
<label class="custom-control-label" for="permissions-{{ $item->id }}">
{{ $item->title }}
</label>
</div>
<div class="form-group {{ $errors->has('permissions') ? 'has-error' : '' }}">
<div class="row pt-4">
@foreach($action_permissions as $item)
<div class="col-md-4 role-list">
<div class="custom-control custom-checkbox">
{{ Form::checkbox('permissions', $item->id, null, ['id' => 'permissions-' . $item->id, 'class' => 'custom-control-input', 'v-model' => 'form.permissions']) }}
<label class="custom-control-label" for="permissions-{{ $item->id }}">
{{ $item->title }}
</label>
</div>
@if ($item->name == 'read-admin-panel' || $item->name == 'read-client-portal')
{{ Form::hidden($item->name, $item->id, ['id' => $item->name]) }}
@endif
@endforeach
{!! $errors->first('permissions', '<p class="help-block">:message</p>') !!}
</div>
</div>
@if (($item->name == 'read-admin-panel') || ($item->name == 'read-client-portal'))
{{ Form::hidden($item->name, $item->id, ['id' => $item->name]) }}
@endif
@endforeach
{!! $errors->first('permissions', '<p class="help-block">:message</p>') !!}
</div>
</div>
@stack('permissions_input_end')
</div>
@endforeach

View File

@ -12,7 +12,7 @@
'files' => true,
'role' => 'form',
'class' => 'form-loading-button',
'novalidate' => true
'novalidate' => true,
]) !!}
<div class="card">
@ -34,10 +34,10 @@
<div class="nav-wrapper">
<ul class="nav nav-pills nav-fill flex-column flex-md-row" id="tabs-icons-text" role="tablist">
@foreach($names as $name)
@php $active_tab_name = ($name == 'read') ? 'active' : ''; @endphp
@foreach($actions as $action)
@php $active_action_tab = ($action == 'read') ? 'active' : ''; @endphp
<li class="nav-item">
<a class="nav-link mb-sm-3 mb-md-0 {{ $active_tab_name }}" id="tabs-icons-text-1-tab" data-toggle="tab" href="#tab-{{ $name }}" role="tab" aria-controls="tabs-icons-text-1" aria-selected="true">{{ ucwords($name) }}</a>
<a class="nav-link mb-sm-3 mb-md-0 {{ $active_action_tab }}" id="tabs-icons-text-1-tab" data-toggle="tab" href="#tab-{{ $action }}" role="tab" aria-controls="tabs-icons-text-1" aria-selected="true">{{ ucwords($action) }}</a>
</li>
@endforeach
</ul>
@ -45,32 +45,34 @@
<div class="card">
<div class="card-body">
<div class="tab-content" id="myTabContent">
@foreach($permissions as $code => $code_permissions)
@php $active_tab_code = ($code == 'read') ? 'active' : ''; @endphp
<div class="tab-pane fade show {{ $active_tab_code }}" id="tab-{{ $code }}" role="tabpanel" aria-labelledby="tabs-icons-text-1-tab">
<span class="btn btn-primary btn-sm" @click="select('{{ $code }}')">{{trans('general.select_all')}}</span>
<span class="btn btn-primary btn-sm" @click="unselect('{{ $code }}')">{{trans('general.unselect_all')}}</span>
<div class="tab-content">
@foreach($permissions as $action => $action_permissions)
@php $active_action_tab = ($action == 'read') ? 'active' : ''; @endphp
<div class="tab-pane fade show {{ $active_action_tab }}" id="tab-{{ $action }}" role="tabpanel">
<span class="btn btn-primary btn-sm" @click="select('{{ $action }}')">{{trans('general.select_all')}}</span>
<span class="btn btn-primary btn-sm" @click="unselect('{{ $action }}')">{{trans('general.unselect_all')}}</span>
@stack('permissions_input_start')
<div class="form-group {{ $errors->has('permissions') ? 'has-error' : '' }}">
<div class="row pt-4">
@foreach($code_permissions as $item)
<div class="col-md-4 role-list">
<div class="custom-control custom-checkbox">
{{ Form::checkbox('permissions', $item->id, null, ['id' => 'permissions-' . $item->id, 'class' => 'custom-control-input', 'v-model' => 'form.permissions']) }}
<label class="custom-control-label" for="permissions-{{ $item->id }}">
{{ $item->title }}
</label>
</div>
<div class="form-group {{ $errors->has('permissions') ? 'has-error' : '' }}">
<div class="row pt-4">
@foreach($action_permissions as $item)
<div class="col-md-4 role-list">
<div class="custom-control custom-checkbox">
{{ Form::checkbox('permissions', $item->id, null, ['id' => 'permissions-' . $item->id, 'class' => 'custom-control-input', 'v-model' => 'form.permissions']) }}
<label class="custom-control-label" for="permissions-{{ $item->id }}">
{{ $item->title }}
</label>
</div>
@if ($item->name == 'read-admin-panel' || $item->name == 'read-client-portal')
</div>
@if (($item->name == 'read-admin-panel') || ($item->name == 'read-client-portal'))
{{ Form::hidden($item->name, $item->id, ['id' => $item->name]) }}
@endif
@endforeach
{!! $errors->first('permissions', '<p class="help-block">:message</p>') !!}
</div>
@endif
@endforeach
{!! $errors->first('permissions', '<p class="help-block">:message</p>') !!}
</div>
</div>
@stack('permissions_input_end')
</div>
@endforeach