aiblog/app/Http/Controllers/Api/UserController.php
2024-11-17 11:30:01 +08:00

68 lines
No EOL
1.7 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Validation\Rule;
class UserController extends Controller
{
public function index(): JsonResponse
{
$users = User::all();
return response()->json([
'users' => $users->map(fn($user) => [
'id' => $user->id,
'name' => $user->name,
'email' => $user->email,
'role' => $user->role,
])
]);
}
public function update(Request $request, User $user): JsonResponse
{
$validated = $request->validate([
'name' => 'sometimes|string|max:255',
'email' => [
'sometimes',
'email',
Rule::unique('users')->ignore($user->id),
],
'password' => 'sometimes|string|min:8',
'role' => 'sometimes|in:admin,author',
]);
if (isset($validated['password'])) {
$validated['password'] = Hash::make($validated['password']);
}
$user->update($validated);
return response()->json([
'message' => 'User updated successfully',
'user' => [
'id' => $user->id,
'name' => $user->name,
'email' => $user->email,
'role' => $user->role,
]
]);
}
public function destroy(User $user): JsonResponse
{
$user->delete();
return response()->json([
'message' => 'User deleted successfully'
]);
}
}