\App\Models\User::with('roles')->paginate(30), 'roles' => Role::withCount('permissions', 'users')->get(), ]); } public function create() { return Inertia::render('Acl/RoleCreate', ['permissions' => Permission::all()->groupBy(fn($p) => explode('.', $p->name)[0])]); } public function store(Request $request) { $validated = $request->validate(['name' => 'required|string|unique:roles', 'permissions' => 'array']); $role = Role::create(['name' => $validated['name']]); if ($validated['permissions'] ?? false) { $role->syncPermissions($validated['permissions']); } return redirect()->route('acl.index')->with('success', 'Role created.'); } public function edit(Role $role) { return Inertia::render('Acl/RoleEdit', [ 'role' => $role->load('permissions'), 'permissions' => Permission::all()->groupBy(fn($p) => explode('.', $p->name)[0]), ]); } public function update(Request $request, Role $role) { $role->syncPermissions($request->input('permissions', [])); return back()->with('success', 'Role updated.'); } public function destroy(Role $role) { if (in_array($role->name, ['super-admin', 'admin'])) { return back()->with('error', 'Cannot delete system roles.'); } $role->delete(); return back()->with('success', 'Role deleted.'); } }