File "RolesController.php"
Full Path: /home/clickysoft/public_html/jmapi5.clickysoft.net/app/Http/Controllers/Admin/RolesController.php
File size: 3.77 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\MassDestroyRoleRequest;
use App\Http\Requests\Admin\StoreRoleRequest;
use App\Http\Requests\Admin\UpdateRoleRequest;
use App\Models\Permission;
use App\Models\Role;
use Gate;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
use Yajra\DataTables\Facades\DataTables;
class RolesController extends Controller
{
public function index(Request $request)
{
abort_if(Gate::denies('role_access'), Response::HTTP_FORBIDDEN, '403 Forbidden');
if ($request->ajax()) {
$query = Role::with(['permissions'])->select(sprintf('%s.*', (new Role())->table));
$table = Datatables::of($query);
$table->addColumn('placeholder', ' ');
$table->addColumn('actions', ' ');
$table->editColumn('actions', function ($row) {
$viewGate = 'role_show';
$editGate = 'role_edit';
$deleteGate = 'role_delete';
$crudRoutePart = 'roles';
return view('partials.datatablesActions', compact(
'viewGate',
'editGate',
'deleteGate',
'crudRoutePart',
'row'
));
});
$table->editColumn('id', function ($row) {
return $row->id ? $row->id : '';
});
$table->editColumn('title', function ($row) {
return $row->title ? $row->title : '';
});
$table->editColumn('permissions', function ($row) {
$labels = [];
foreach ($row->permissions as $permission) {
$labels[] = sprintf('<span class="label label-info label-many">%s</span>', $permission->title);
}
return implode(' ', $labels);
});
$table->rawColumns(['actions', 'placeholder', 'permissions']);
return $table->make(true);
}
$permissions = Permission::get();
return view('admin.roles.index', compact('permissions'));
}
public function create()
{
abort_if(Gate::denies('role_create'), Response::HTTP_FORBIDDEN, '403 Forbidden');
$permissions = Permission::pluck('title', 'id');
return view('admin.roles.create', compact('permissions'));
}
public function store(StoreRoleRequest $request)
{
$role = Role::create($request->all());
$role->permissions()->sync($request->input('permissions', []));
return redirect()->route('admin.roles.index');
}
public function edit(Role $role)
{
abort_if(Gate::denies('role_edit'), Response::HTTP_FORBIDDEN, '403 Forbidden');
$permissions = Permission::pluck('title', 'id');
$role->load('permissions');
return view('admin.roles.edit', compact('permissions', 'role'));
}
public function update(UpdateRoleRequest $request, Role $role)
{
$role->update($request->all());
$role->permissions()->sync($request->input('permissions', []));
return redirect()->route('admin.roles.index');
}
public function show(Role $role)
{
abort_if(Gate::denies('role_show'), Response::HTTP_FORBIDDEN, '403 Forbidden');
$role->load('permissions');
return view('admin.roles.show', compact('role'));
}
public function destroy(Role $role)
{
abort_if(Gate::denies('role_delete'), Response::HTTP_FORBIDDEN, '403 Forbidden');
$role->delete();
return back();
}
public function massDestroy(MassDestroyRoleRequest $request)
{
Role::whereIn('id', request('ids'))->delete();
return response(null, Response::HTTP_NO_CONTENT);
}
}