route('acl.index'); } public function create() { return \Inertia\Inertia::render('Acl/UserCreate', ['roles' => Role::all()]); } public function store(Request $request) { $validated = $request->validate([ 'name' => 'required|string', 'email' => 'required|email|unique:users', 'password' => 'required|string|min:8', 'roles' => 'array', ]); $user = User::create([ 'name' => $validated['name'], 'email' => $validated['email'], 'password' => Hash::make($validated['password']), ]); if ($validated['roles'] ?? false) { $user->assignRole($validated['roles']); } return redirect()->route('acl.index')->with('success', 'User created.'); } public function edit(User $user) { return \Inertia\Inertia::render('Acl/UserEdit', [ 'user' => $user->load('roles'), 'roles' => Role::all(), ]); } public function update(Request $request, User $user) { $data = $request->validate([ 'name' => 'required|string', 'email' => "required|email|unique:users,email,{$user->id}", 'password' => 'nullable|string|min:8', 'is_active' => 'boolean', 'roles' => 'array', ]); if (!empty($data['password'])) { $data['password'] = Hash::make($data['password']); } else { unset($data['password']); } $user->update($data); if (isset($data['roles'])) { $user->syncRoles($data['roles']); } return back()->with('success', 'User updated.'); } public function destroy(User $user) { if ($user->id === auth()->id()) { return back()->with('error', 'Cannot delete your own account.'); } $user->delete(); return back()->with('success', 'User deleted.'); } public function assignRole(Request $request, User $user) { $roles = $request->validate(['roles' => 'required|array'])['roles']; $user->syncRoles($roles); return back()->with('success', 'Roles updated.'); } }