feat: crud da wishlist concluido, testado e backdoor removido
This commit is contained in:
@@ -12,7 +12,6 @@ class WishlistController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function store(Request $request)
|
public function store(Request $request)
|
||||||
{
|
{
|
||||||
// 1. Valida se o Frontend mandou o ID do jogo corretamente
|
|
||||||
$validated = $request->validate([
|
$validated = $request->validate([
|
||||||
'game_id' => 'required|string',
|
'game_id' => 'required|string',
|
||||||
'is_wishlist' => 'boolean',
|
'is_wishlist' => 'boolean',
|
||||||
@@ -21,12 +20,8 @@ class WishlistController extends Controller
|
|||||||
'price_alert' => 'boolean',
|
'price_alert' => 'boolean',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// 2. Pega o ID do usuário que a nossa fechadura extraiu do Token JWT
|
|
||||||
$userId = $request->get('auth_id');
|
$userId = $request->get('auth_id');
|
||||||
|
|
||||||
// 3. Salva no banco.
|
|
||||||
// O updateOrCreate procura se esse usuário já tem esse jogo na lista.
|
|
||||||
// Se tiver, ele apenas atualiza as flags (ex: ativa o price_alert). Se não tiver, ele cria um novo.
|
|
||||||
$wishlistItem = WishlistItem::updateOrCreate(
|
$wishlistItem = WishlistItem::updateOrCreate(
|
||||||
[
|
[
|
||||||
'user_id' => $userId,
|
'user_id' => $userId,
|
||||||
@@ -40,10 +35,44 @@ class WishlistController extends Controller
|
|||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
// 4. Devolve a resposta de sucesso
|
|
||||||
return response()->json([
|
return response()->json([
|
||||||
'message' => 'Jogo salvo na lista com sucesso!',
|
'message' => 'Jogo salvo na lista com sucesso!',
|
||||||
'data' => $wishlistItem
|
'data' => $wishlistItem
|
||||||
], 201);
|
], 201);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Lista todos os jogos salvos pelo usuário logado.
|
||||||
|
*/
|
||||||
|
public function index(Request $request)
|
||||||
|
{
|
||||||
|
$userId = $request->get('auth_id');
|
||||||
|
|
||||||
|
// Busca no banco todos os registros que pertencem a este usuário
|
||||||
|
$items = WishlistItem::where('user_id', $userId)->get();
|
||||||
|
|
||||||
|
return response()->json([
|
||||||
|
'data' => $items
|
||||||
|
], 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove um jogo da lista do usuário.
|
||||||
|
*/
|
||||||
|
public function destroy(Request $request, $game_id)
|
||||||
|
{
|
||||||
|
$userId = $request->get('auth_id');
|
||||||
|
|
||||||
|
// Procura o jogo específico deste usuário e deleta
|
||||||
|
$deleted = WishlistItem::where('user_id', $userId)
|
||||||
|
->where('game_id', $game_id)
|
||||||
|
->delete();
|
||||||
|
|
||||||
|
// Se o jogo não existia na lista, avisa o Frontend
|
||||||
|
if (!$deleted) {
|
||||||
|
return response()->json(['message' => 'Jogo não encontrado na sua lista.'], 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
return response()->json(['message' => 'Jogo removido com sucesso!'], 200);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -11,12 +11,17 @@ Route::get('/ping', function () {
|
|||||||
// Todas as rotas dentro deste grupo passam pela fechadura JWT
|
// Todas as rotas dentro deste grupo passam pela fechadura JWT
|
||||||
Route::middleware(['jwt.auth'])->group(function () {
|
Route::middleware(['jwt.auth'])->group(function () {
|
||||||
|
|
||||||
// Rota de teste antiga
|
|
||||||
Route::get('/teste-fechadura', function (Request $request) {
|
Route::get('/teste-fechadura', function (Request $request) {
|
||||||
return response()->json(['usuario_logado_id' => $request->get('auth_id')]);
|
return response()->json(['usuario_logado_id' => $request->get('auth_id')]);
|
||||||
});
|
});
|
||||||
|
|
||||||
// A nossa nova rota real de adicionar aos favoritos!
|
// Rota para Adicionar jogo
|
||||||
Route::post('/wishlist', [WishlistController::class, 'store']);
|
Route::post('/wishlist', [WishlistController::class, 'store']);
|
||||||
|
|
||||||
|
// Rota para Listar os jogos do usuário logado
|
||||||
|
Route::get('/wishlist', [WishlistController::class, 'index']);
|
||||||
|
|
||||||
|
// Rota para Remover um jogo (passando o ID do jogo na URL)
|
||||||
|
Route::delete('/wishlist/{game_id}', [WishlistController::class, 'destroy']);
|
||||||
|
|
||||||
});
|
});
|
||||||
Reference in New Issue
Block a user