/home2/mshostin/hall-management.ms-hostingladz.com/app/Http/Controllers/Backend/RoleController.php
<?php
namespace App\Http\Controllers\Backend;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Role;
use App\Models\Permission;
use Illuminate\Support\Facades\Auth;
use App\Models\Activity;
class RoleController extends Controller
{
public function __construct()
{
$permissions = [
'index' => 'view-roles',
'store' => 'create-roles',
'update' => 'edit-roles',
'destroy' => 'delete-roles',
];
foreach ($permissions as $method => $permission) {
$this->middleware("permission:{$permission}")->only($method);
}
}
public function index()
{
$roles = Role::with('permissions')->orderBy('name')->get();
return view('dashboard.pages.roles', compact('roles'));
}
public function store(Request $request)
{
$request->validate([
'name' => 'required|string|max:255|unique:roles,name',
'slug' => 'required|string|max:255|unique:roles,slug',
'permissions' => 'nullable|array',
]);
$role = Role::create($request->only(['name', 'slug']));
if ($request->filled('permissions')) {
$role->permissions()->sync($request->permissions);
}
return redirect()->route('roles.index')->with('success', 'Role created successfully.');
}
public function update(Request $request, Role $role)
{
$request->validate([
'name' => 'required|string|max:255|unique:roles,name,' . $role->id,
'slug' => 'required|string|max:255|unique:roles,slug,' . $role->id,
'permissions' => 'nullable|array',
]);
$original = $role->getOriginal();
$role->update($request->only(['name', 'slug']));
$role->permissions()->sync($request->permissions ?? []);
return redirect()->route('roles.index')->with('success', 'Role updated successfully.');
}
public function destroy(Role $role)
{
$attributes = $role->getAttributes();
$permissions = $role->permissions()->pluck('id')->toArray();
$role->permissions()->detach();
$role->users()->detach();
$role->delete();
return redirect()->route('roles.index')->with('success', 'Role deleted successfully.');
}
}