Viewing file: RoleController.php (4.37 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace App\Http\Controllers\Admin;
use App\Models\Permission; use App\Models\Role; use App\Models\Admin\StorePermission; use App\Models\Admin\StoreRole; use Illuminate\Http\Request; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\DB;
class RoleController extends Controller { public function index() { return view('admin.roles.index'); }
public function create() { $data['permissions'] = DB::table('permissions')->get(); return view('admin.roles.create', $data);
}
public function store(Request $request) {
$request->validate([ 'role_name' => 'required', 'permissions' => 'required|array' ]); DB::transaction(function () use ($request) {
//-- Create New Role $role_id = DB::table('roles')->insertGetId([ 'name' => $request->role_name, 'label' => $request->role_name, 'description' => $request->role_description ]);
$role = StoreRole::findOrFail($role_id); $role->permissions()->detach(); $permissions = $request->permissions;
$data = []; foreach ($permissions as $permission_slug) { //get the permission object by name $perm = StorePermission::firstOrCreate(['name' => $permission_slug]); $data[] = $perm->id;
}
$role->permissions()->attach($data);
}, 2);
return redirect()->back()->with('success', 'Congratulations! You have created the role successfully.'); }
public function getAll(Request $request) { $roles = StoreRole::with('permissions'); return datatables()->of($roles) ->addColumn('action', function ($q) { return "<a class='btn btn-sm btn-info' data-toggle='tooltip' data-placement='top' title='Edit' href='" . route('admin.roles.edit', [$q->id]) . "'>" . "<i class='fas fa-edit'></i>" . "</a> " . '<button class="btn btn-sm btn-danger" data-message="Are you sure you want to delete this Role?" data-action=' . route('admin.roles.destroy', [$q]) . ' data-input={"_method":"delete"} data-toggle="modal" data-target="#modal-confirm" data-toggle="tooltip" data-placement="top" title="Delete"><i class="fas fa-trash"></i></button>'; }) ->addColumn('permissions', function ($q) { $permissions = '';
foreach ($q->permissions as $permission) { $permissions .= $permission->name . ', '; } return $permissions; }) ->rawColumns(['action']) ->toJson(); }
public function edit($id) { $data['role'] = $role = StoreRole::findOrFail($id); $data['permissions'] = DB::table('permissions')->get(); $data['role_permissions'] = $role->permissions->pluck('name')->toArray(); return view('admin.roles.edit', $data); }
public function update($id, Request $request) {
$request->validate([ 'role_name' => 'required', 'permissions' => 'required|array' ]); \DB::transaction(function () use ($request, $id) {
$role = StoreRole::findOrFail($id); $role->name = $request->role_name; $role->label = $request->role_name; $role->description = $request->role_description; $role->save();
$role->permissions()->detach(); $permissions = $request->permissions;
$data = []; foreach ($permissions as $permission_slug) { //get the permission object by name $perm = StorePermission::firstOrCreate(['name' => $permission_slug]); $data[] = $perm->id;
}
$role->permissions()->attach($data); }); return redirect()->back()->with('success', 'Congratulations! Role has been updated successfully');
}
public function destroy(Request $request, $id) {
//TODO: Need to check if the role has been used or not StoreRole::whereId($id)->delete(); return redirect()->back()->with('success', 'Role has been deleted successfully'); } }
|