%PDF- %PDF-
Direktori : /home/silvzytp/dsr_code/vendor/laravel/framework/src/Illuminate/Cookie/ |
Current File : //home/silvzytp/dsr_code/vendor/laravel/framework/src/Illuminate/Cookie/CookieJar.php |
<?php namespace Illuminate\Cookie; use Illuminate\Contracts\Cookie\QueueingFactory as JarContract; use Illuminate\Support\Arr; use Illuminate\Support\InteractsWithTime; use Illuminate\Support\Traits\Macroable; use Symfony\Component\HttpFoundation\Cookie; class CookieJar implements JarContract { use InteractsWithTime, Macroable; /** * The default path (if specified). * * @var string */ protected $path = '/'; /** * The default domain (if specified). * * @var string */ protected $domain; /** * The default secure setting (defaults to null). * * @var bool|null */ protected $secure; /** * The default SameSite option (defaults to lax). * * @var string */ protected $sameSite = 'lax'; /** * All of the cookies queued for sending. * * @var \Symfony\Component\HttpFoundation\Cookie[] */ protected $queued = []; /** * Create a new cookie instance. * * @param string $name * @param string $value * @param int $minutes * @param string|null $path * @param string|null $domain * @param bool|null $secure * @param bool $httpOnly * @param bool $raw * @param string|null $sameSite * @return \Symfony\Component\HttpFoundation\Cookie */ public function make($name, $value, $minutes = 0, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null) { [$path, $domain, $secure, $sameSite] = $this->getPathAndDomain($path, $domain, $secure, $sameSite); $time = ($minutes == 0) ? 0 : $this->availableAt($minutes * 60); return new Cookie($name, $value, $time, $path, $domain, $secure, $httpOnly, $raw, $sameSite); } /** * Create a cookie that lasts "forever" (400 days). * * @param string $name * @param string $value * @param string|null $path * @param string|null $domain * @param bool|null $secure * @param bool $httpOnly * @param bool $raw * @param string|null $sameSite * @return \Symfony\Component\HttpFoundation\Cookie */ public function forever($name, $value, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null) { return $this->make($name, $value, 576000, $path, $domain, $secure, $httpOnly, $raw, $sameSite); } /** * Expire the given cookie. * * @param string $name * @param string|null $path * @param string|null $domain * @return \Symfony\Component\HttpFoundation\Cookie */ public function forget($name, $path = null, $domain = null) { return $this->make($name, null, -2628000, $path, $domain); } /** * Determine if a cookie has been queued. * * @param string $key * @param string|null $path * @return bool */ public function hasQueued($key, $path = null) { return ! is_null($this->queued($key, null, $path)); } /** * Get a queued cookie instance. * * @param string $key * @param mixed $default * @param string|null $path * @return \Symfony\Component\HttpFoundation\Cookie|null */ public function queued($key, $default = null, $path = null) { $queued = Arr::get($this->queued, $key, $default); if ($path === null) { return Arr::last($queued, null, $default); } return Arr::get($queued, $path, $default); } /** * Queue a cookie to send with the next response. * * @param array $parameters * @return void */ public function queue(...$parameters) { if (isset($parameters[0]) && $parameters[0] instanceof Cookie) { $cookie = $parameters[0]; } else { $cookie = $this->make(...array_values($parameters)); } if (! isset($this->queued[$cookie->getName()])) { $this->queued[$cookie->getName()] = []; } $this->queued[$cookie->getName()][$cookie->getPath()] = $cookie; } /** * Queue a cookie to expire with the next response. * * @param string $name * @param string|null $path * @param string|null $domain * @return void */ public function expire($name, $path = null, $domain = null) { $this->queue($this->forget($name, $path, $domain)); } /** * Remove a cookie from the queue. * * @param string $name * @param string|null $path * @return void */ public function unqueue($name, $path = null) { if ($path === null) { unset($this->queued[$name]); return; } unset($this->queued[$name][$path]); if (empty($this->queued[$name])) { unset($this->queued[$name]); } } /** * Get the path and domain, or the default values. * * @param string $path * @param string $domain * @param bool|null $secure * @param string|null $sameSite * @return array */ protected function getPathAndDomain($path, $domain, $secure = null, $sameSite = null) { return [$path ?: $this->path, $domain ?: $this->domain, is_bool($secure) ? $secure : $this->secure, $sameSite ?: $this->sameSite]; } /** * Set the default path and domain for the jar. * * @param string $path * @param string $domain * @param bool $secure * @param string|null $sameSite * @return $this */ public function setDefaultPathAndDomain($path, $domain, $secure = false, $sameSite = null) { [$this->path, $this->domain, $this->secure, $this->sameSite] = [$path, $domain, $secure, $sameSite]; return $this; } /** * Get the cookies which have been queued for the next request. * * @return \Symfony\Component\HttpFoundation\Cookie[] */ public function getQueuedCookies() { return Arr::flatten($this->queued); } /** * Flush the cookies which have been queued for the next request. * * @return $this */ public function flushQueuedCookies() { $this->queued = []; return $this; } }