orderBy('id')->get(); return view('admin.users.index', compact('users')); } /** * Show the form for creating a new user. */ public function create() { $roles = Role::all(); return view('admin.users.create', compact('roles')); } /** * Store a newly created user in storage. */ public function store(Request $request) { $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255|unique:users', 'password' => 'required|string|min:6|confirmed', 'role' => 'required|exists:roles,name', ], [ 'name.required' => 'Nama lengkap wajib diisi', 'email.required' => 'Email wajib diisi', 'email.unique' => 'Email sudah terdaftar', 'password.required' => 'Password wajib diisi', 'password.min' => 'Password minimal 6 karakter', 'password.confirmed'=> 'Konfirmasi password tidak cocok', 'role.required' => 'Role wajib dipilih', ]); $user = User::create([ 'name' => $request->name, 'email' => $request->email, 'password' => Hash::make($request->password), ]); $user->assignRole($request->role); return redirect()->route('admin.users.index') ->with('success', 'User berhasil ditambahkan!'); } /** * Show the form for editing the specified user. */ public function edit(User $user) { $roles = Role::all(); return view('admin.users.edit', compact('user', 'roles')); } /** * Update the specified user in storage. */ public function update(Request $request, User $user) { $request->validate([ 'name' => 'required|string|max:255', 'email' => ['required', 'string', 'email', 'max:255', Rule::unique('users')->ignore($user->id)], 'password' => 'nullable|string|min:6|confirmed', 'role' => 'required|exists:roles,name', ], [ 'name.required' => 'Nama lengkap wajib diisi', 'email.required' => 'Email wajib diisi', 'email.unique' => 'Email sudah terdaftar', 'password.min' => 'Password minimal 6 karakter', 'password.confirmed'=> 'Konfirmasi password tidak cocok', 'role.required' => 'Role wajib dipilih', ]); $user->name = $request->name; $user->email = $request->email; if ($request->filled('password')) { $user->password = Hash::make($request->password); } $user->save(); // Sync role baru $user->syncRoles([$request->role]); return redirect()->route('admin.users.index') ->with('success', 'Data user berhasil diperbarui!'); } /** * Remove the specified user from storage. */ public function destroy(User $user) { // Cegah menghapus diri sendiri if (auth()->id() === $user->id) { return redirect()->route('admin.users.index') ->with('error', 'Anda tidak dapat menghapus akun Anda sendiri yang sedang aktif!'); } $user->delete(); return redirect()->route('admin.users.index') ->with('success', 'User berhasil dihapus!'); } }