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()));
 | 
						|
	}
 | 
						|
}
 | 
						|
 |