1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 
	<?php
namespace Riimu\Kit\CSRF\Storage;
class SessionStorage implements TokenStorage
{
    
    private $name;
    
    public function __construct($name = 'csrf_token')
    {
        $this->name = $name;
    }
    public function storeToken($token)
    {
        if (!$this->isSessionActive()) {
            throw new TokenStorageException('Error storing CSRF token, no session active');
        }
        $_SESSION[$this->name] = base64_encode($token);
    }
    
    protected function isSessionActive()
    {
        return session_status() === PHP_SESSION_ACTIVE;
    }
    public function getStoredToken()
    {
        if (!$this->isSessionActive()) {
            throw new TokenStorageException('Cannot load CSRF token, no session active');
        } elseif (isset($_SESSION[$this->name])) {
            return base64_decode($_SESSION[$this->name], true);
        }
        return false;
    }
}