get()->map(fn($u) => [ 'id' => $u->id, 'name' => $u->name, 'email' => $u->email, 'role' => $u->getRoleNames()->first() ?? null, ]); return response()->json($users); } public function store(Request $request) { $validated = $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users,email', 'password' => 'required|string|min:8', 'role' => 'required|string|exists:roles,name', ]); $user = User::create([ 'name' => $validated['name'], 'email' => $validated['email'], 'password' => $validated['password'], ]); $user->syncRoles([$validated['role']]); return response()->json(['success' => true, 'data' => [ 'id' => $user->id, 'name' => $user->name, 'email' => $user->email, 'role' => $validated['role'], ]]); } public function update(Request $request, $id) { $user = User::findOrFail($id); $validated = $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users,email,' . $id, 'role' => 'required|string|exists:roles,name', ]); $user->update(['name' => $validated['name'], 'email' => $validated['email']]); $user->syncRoles([$validated['role']]); return response()->json(['success' => true, 'data' => [ 'id' => $user->id, 'name' => $user->name, 'email' => $user->email, 'role' => $validated['role'], ]]); } public function destroy($id) { $user = User::findOrFail($id); if ($user->id === auth()->id()) { return response()->json(['message' => 'Tidak dapat menghapus akun sendiri.'], 403); } $user->delete(); return response()->json(['success' => true]); } public function resetPassword(Request $request, $id) { $user = User::findOrFail($id); $request->validate([ 'password' => 'required|string|min:8|confirmed', ]); $user->update(['password' => $request->password]); return response()->json(['success' => true]); } }