mirror of
https://github.com/YunoHost-Apps/kanboard_ynh.git
synced 2024-09-03 19:36:17 +02:00
120 lines
2.4 KiB
PHP
120 lines
2.4 KiB
PHP
<?php
|
|
|
|
namespace Kanboard\Core\Http;
|
|
|
|
use Kanboard\Core\Base;
|
|
|
|
/**
|
|
* Remember Me Cookie
|
|
*
|
|
* @package http
|
|
* @author Frederic Guillot
|
|
*/
|
|
class RememberMeCookie extends Base
|
|
{
|
|
/**
|
|
* Cookie name
|
|
*
|
|
* @var string
|
|
*/
|
|
const COOKIE_NAME = 'KB_RM';
|
|
|
|
/**
|
|
* Encode the cookie
|
|
*
|
|
* @access public
|
|
* @param string $token Session token
|
|
* @param string $sequence Sequence token
|
|
* @return string
|
|
*/
|
|
public function encode($token, $sequence)
|
|
{
|
|
return implode('|', array($token, $sequence));
|
|
}
|
|
|
|
/**
|
|
* Decode the value of a cookie
|
|
*
|
|
* @access public
|
|
* @param string $value Raw cookie data
|
|
* @return array
|
|
*/
|
|
public function decode($value)
|
|
{
|
|
list($token, $sequence) = explode('|', $value);
|
|
|
|
return array(
|
|
'token' => $token,
|
|
'sequence' => $sequence,
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Return true if the current user has a RememberMe cookie
|
|
*
|
|
* @access public
|
|
* @return bool
|
|
*/
|
|
public function hasCookie()
|
|
{
|
|
return $this->request->getCookie(self::COOKIE_NAME) !== '';
|
|
}
|
|
|
|
/**
|
|
* Write and encode the cookie
|
|
*
|
|
* @access public
|
|
* @param string $token Session token
|
|
* @param string $sequence Sequence token
|
|
* @param string $expiration Cookie expiration
|
|
* @return boolean
|
|
*/
|
|
public function write($token, $sequence, $expiration)
|
|
{
|
|
return setcookie(
|
|
self::COOKIE_NAME,
|
|
$this->encode($token, $sequence),
|
|
$expiration,
|
|
$this->helper->url->dir(),
|
|
null,
|
|
$this->request->isHTTPS(),
|
|
true
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Read and decode the cookie
|
|
*
|
|
* @access public
|
|
* @return mixed
|
|
*/
|
|
public function read()
|
|
{
|
|
$cookie = $this->request->getCookie(self::COOKIE_NAME);
|
|
|
|
if (empty($cookie)) {
|
|
return false;
|
|
}
|
|
|
|
return $this->decode($cookie);
|
|
}
|
|
|
|
/**
|
|
* Remove the cookie
|
|
*
|
|
* @access public
|
|
* @return boolean
|
|
*/
|
|
public function remove()
|
|
{
|
|
return setcookie(
|
|
self::COOKIE_NAME,
|
|
'',
|
|
time() - 3600,
|
|
$this->helper->url->dir(),
|
|
null,
|
|
$this->request->isHTTPS(),
|
|
true
|
|
);
|
|
}
|
|
}
|