A super easy PHP Framework for web development!
https://github.com/exacti/phacil-framework
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
145 lines
2.9 KiB
145 lines
2.9 KiB
<?php
|
|
/**
|
|
* Copyright © 2024 ExacTI Technology Solutions. All rights reserved.
|
|
* GPLv3 General License.
|
|
* https://exacti.com.br
|
|
* Phacil PHP Framework - https://github.com/exacti/phacil-framework
|
|
*/
|
|
|
|
namespace Phacil\Framework\Cookies;
|
|
|
|
use Phacil\Framework\Config as FrameworkConfig;
|
|
|
|
/**
|
|
* @since 2.0.0
|
|
* @package Phacil\Framework\Cookies
|
|
*/
|
|
class Config
|
|
{
|
|
const STRICT = 'Strict';
|
|
|
|
const LAX = 'Lax';
|
|
|
|
const NONE = 'None';
|
|
|
|
const DEFAULT_HTTP_ONLY = true;
|
|
|
|
const DEFAULT_DOMAIN = '';
|
|
|
|
const DEFAULT_PATH = '/';
|
|
|
|
const DEFAULT_EXPIRY = 0;
|
|
|
|
/**
|
|
*
|
|
* @var string[]
|
|
*/
|
|
private $value = [];
|
|
|
|
public function __construct(
|
|
FrameworkConfig $config
|
|
) {
|
|
//$this->config = $config;
|
|
$this->value['sameSite'] = $config->get('cookie_same_site') ?: self::STRICT;
|
|
$this->value['expires'] = $config->get('cookie_expires') ?: self::DEFAULT_EXPIRY;
|
|
$this->value['path'] = $config->get('cookie_path') ?: self::DEFAULT_PATH;
|
|
$this->value['domain'] = $config->get('cookie_domain') ?: self::DEFAULT_DOMAIN;
|
|
$this->value['secure'] = $config->get('cookie_secure') !== null ? $config->get('cookie_secure') : ($this->isSecure());
|
|
$this->value['httpOnly'] = $config->get('cookie_http_only') !== null ? $config->get('cookie_http_only') : self::DEFAULT_HTTP_ONLY;
|
|
}
|
|
|
|
/** @return $this */
|
|
public function setStrict()
|
|
{
|
|
$this->value['sameSite'] = self::STRICT;
|
|
return $this;
|
|
}
|
|
|
|
/** @return $this */
|
|
public function setLax()
|
|
{
|
|
$this->value['sameSite'] = self::LAX;
|
|
return $this;
|
|
}
|
|
|
|
/** @return $this */
|
|
public function setNone()
|
|
{
|
|
$this->value['sameSite'] = self::NONE;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @param string $key
|
|
* @return string
|
|
*/
|
|
public function getValue($key)
|
|
{
|
|
return $this->value[$key];
|
|
}
|
|
|
|
/** @return string[] */
|
|
public function getValues()
|
|
{
|
|
return $this->value;
|
|
}
|
|
|
|
/**
|
|
* @param string $key
|
|
* @param string|int $value
|
|
* @return $this
|
|
*/
|
|
public function setValue($key, $value) {
|
|
$this->value[$key] = $value;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Check if is secure (SSL) connection
|
|
* @return bool
|
|
*/
|
|
public function isSecure()
|
|
{
|
|
return (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') || $_SERVER['SERVER_PORT'] == 443;
|
|
}
|
|
|
|
/** @return string */
|
|
public function getSameSite() {
|
|
return $this->value['sameSite'];
|
|
}
|
|
|
|
/** @return string */
|
|
public function getExpires() {
|
|
return $this->value['expires'];
|
|
}
|
|
|
|
/** @return string */
|
|
public function getPath() {
|
|
return $this->value['path'];
|
|
}
|
|
|
|
/** @return string */
|
|
public function getDomain() {
|
|
return $this->value['domain'];
|
|
}
|
|
|
|
/** @return string */
|
|
public function getSecure() {
|
|
return $this->value['secure'];
|
|
}
|
|
|
|
/** @return string */
|
|
public function getHttpOnly() {
|
|
return $this->value['httpOnly'];
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @return $this
|
|
*/
|
|
static public function getInstance()
|
|
{
|
|
$class = get_called_class();
|
|
return \Phacil\Framework\Registry::getAutoInstance((new $class()));
|
|
}
|
|
}
|
|
|