Laravel: Cook ie :: забудьте () не удаляет cook ie, а устанавливает значение null - PullRequest
1 голос
/ 05 мая 2020

У меня есть возможность проверить для определенного повара ie. Если он существует и имеет определенное значение, пользователь будет перенаправлен в другое место, и как только он будет перенаправлен, о поваре ie следует забыть.

Вот функциональность, которая обрабатывает это на моем контроллере:

 /**
     * Set plan intent either to query param or cookie
     *
     * @return void
     */
    private function setPlanIntentCookie() {
        $this->plan_intent = Cookie::get('rh_plan_intent');
    }


    /**
     * Returns all the data needed for the paywall
     */
    public function paywall() {
        $this->setPlanIntentCookie();

        if ($this->plan_intent == "free") {

            $account = auth()->user()->accounts->first();
            $account->update([
                'trial_ends_at' => now()->addDays(30),
            ]);

            return redirect()->route('home')
                ->withCookie(Cookie::forget('rh_plan_intent'));

        }

     // rest of code isn't reached during this test
     ...

}

Мой тест:

/**
     * @test
     */
    public function a_user_with_free_trial_cookie_will_skip_paywall_and_begin_trial() {
        $this->disableCookieEncryption();
        $this->actingAs($this->user);

        $this->withCookie('rh_plan_intent', 'free')
            ->get(route('paywall'))
            ->assertRedirect(route('home'))
            ->assertCookieMissing('rh_plan_intent');


        $this->account->refresh();
        $this->assertNotNull($this->account->trial_ends_at);

    }

Это не удается

Cookie [rh_plan_intent] is present on response.
Failed asserting that Symfony\Component\HttpFoundation\Cookie Object &0000000064bec37e0000000044e2323c (
    'name' => 'rh_plan_intent'
    'value' => null
    'domain' => null
    'expire' => 1431023770
    'path' => '/'
    'secure' => null
    'httpOnly' => true
    'raw' => false
    'sameSite' => null
    'secureDefault' => false
) is null.

поэтому Cook ie :: забудьте (), похоже, меняет значение с * С 1012 * на null? Я хочу полностью удалить повар ie.

Изменить: я только что проверил исходный код laravel и то, что делает forget:

public function forget($name, $path = null, $domain = null)
    {
        return $this->make($name, null, -2628000, $path, $domain);
    }

Так что он просто делает значение null. Как удалить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...