Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Erro 403

Boa noite.

Quando eu segui os passos dessa aula "Salvando no banco" do módulo 3. Assistindo Episódios, minha aplicação está retornando 403 (unauthorized). Poderiam me ajudar como corrigir e como entender este erro para situações futuras? Meu código abaixo:

ROUTE

// Rotas de Episódios
Route::get('/seasons/{season}/episodes', [EpisodesController::class, 'index'])->name('episodes.index')->whereNumber('season');
Route::post('/seasons/{season}/episodes', [EpisodesController::class, 'update'])->name('episodes.update');

EPISODESCONTROLLER

public function update(StoreEpisodeRequest $request, Season $season)
    {
        dd($request);
        $watchedEpisodes = $request->episodes;
        $season->episodes->each(function (Episode $episode) use ($watchedEpisodes) {
            $episode->completed = in_array($episode->id, $watchedEpisodes);
        });

        $season->push();

        return to_route('episodes.index', $season->id);
    }

Obs.: Na minha migration, coloquei como "completed" o que Vinicius colocou como "watched". MIGRATION

public function up(): void
    {
        Schema::table('episodes', function (Blueprint $table) {
            $table->boolean('completed')->default(false);
        });
    }

BLADE

<x-layout title="Episódios da {!! $season->number !!}ª Temporada">
    <form action="{{ route('episodes.update', $season->id) }}" method="post">
        @csrf
        <ul class="list-group">
            @foreach ($episodes as $episode)
                <li class="list-group-item d-flex justify-content-between align-items-center">Episódio {{ $episode->number }}
                    <input @if ($episode->completed) checked @endif type="checkbox" name="episodes[]" value="{{ $episode->id }}"
                        style="cursor: pointer" />
                    {{-- Ao colocar o indicador de Array no atributo 'name', o PHP já trata o dado como array ao ser passado --}}
                </li>
            @endforeach
        </ul>

        <button type="submit" class="btn btn-primary mt-3">Salvar</button>
    </form>
</x-layout>

ERRO Insira aqui a descrição dessa imagem para ajudar na acessibilidade

3 respostas

Acabei de descobrir o problema. Está no "StoreEpisodeRequest $request" do meu controller. Mudei para o Request do Illuminate e deu bom, mas confesso que não sei porque ele deu esse erro ainda. Poderiam me ajudar?

Alô Alan, neste caso você criou uma configuração de request personalizada para o "StoreEpisodeRequest", este erro pode estar acontecendo por não ter este arquivo criado, seguindo o curso eu criei apenas o "SeriesFormRequest", pode ser este o erro que está tendo.

solução!

Pior que estava implementado este arquivo, mas eu achei o problema. Nesta request personalizada tem um método "authorize" que já vem criado por padrão e também por padrão retorna false. Foi só modificar para true e deu bom.

class StoreEpisodeRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     */
    public function authorize(): bool
    {
        return true; //aqui estava o problema
    }