У меня есть возможность проверить для определенного повара 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. Как удалить?