Built out logout procedure.
This commit is contained in:
parent
29987e8640
commit
74257193f1
4 changed files with 60 additions and 5 deletions
|
@ -85,6 +85,16 @@ class RedisModel extends Object
|
||||||
switch ($base)
|
switch ($base)
|
||||||
{
|
{
|
||||||
case 'set':
|
case 'set':
|
||||||
|
if (isset($arguments[1]))
|
||||||
|
{
|
||||||
|
$arguments = $arguments[1];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$key = $this->key(substr($name, 3));
|
||||||
|
var_dump($key, $arguments);
|
||||||
|
}
|
||||||
|
|
||||||
$arguments = array($key, $arguments[1]);
|
$arguments = array($key, $arguments[1]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -4,16 +4,47 @@ class User extends RedisModel
|
||||||
{
|
{
|
||||||
protected $prefix = 'user';
|
protected $prefix = 'user';
|
||||||
|
|
||||||
public static function isAuthenticated()
|
public function generateToken()
|
||||||
|
{
|
||||||
|
return sha1(mt_rand() . microtime());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAuthenticated($fields)
|
||||||
|
{
|
||||||
|
if (!is_array($fields))
|
||||||
|
{
|
||||||
|
$fields = array($fields);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($cookie = self::getCookie())
|
||||||
|
{
|
||||||
|
if ($fields == array('uid'))
|
||||||
|
{
|
||||||
|
return $cookie['uid'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getCookie()
|
||||||
{
|
{
|
||||||
if (isset($_COOKIE['__auth']))
|
if (isset($_COOKIE['__auth']))
|
||||||
{
|
{
|
||||||
list($uid, $auth_token) = explode('|', base64_decode($_COOKIE['__auth']));
|
return array_combine(array('uid', 'token'), explode('|', base64_decode($_COOKIE['__auth'])));
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function isAuthenticated()
|
||||||
|
{
|
||||||
|
if ($cookie = self::getCookie())
|
||||||
|
{
|
||||||
$user = new self();
|
$user = new self();
|
||||||
$user_token = $user->getAuth($uid);
|
$auth_token = $user->getAuth($cookie['uid']);
|
||||||
|
|
||||||
return $user_token === $auth_token;
|
return $auth_token === $cookie['token'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
14
modules/logout.php
Normal file
14
modules/logout.php
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
class logout extends UserModule
|
||||||
|
{
|
||||||
|
public function __default()
|
||||||
|
{
|
||||||
|
$user = new User();
|
||||||
|
$user->setAuth($user->getAuthenticated('uid'), $user->generateToken());
|
||||||
|
|
||||||
|
Browser::goHome();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -38,7 +38,7 @@ class user_create extends AnonymousModule
|
||||||
$uid = $user->nextUID();
|
$uid = $user->nextUID();
|
||||||
|
|
||||||
// Generates the auth token
|
// Generates the auth token
|
||||||
$auth_token = sha1(mt_rand() . microtime());
|
$auth_token = $user->generateToken();
|
||||||
|
|
||||||
// Writes the user data
|
// Writes the user data
|
||||||
$user->set($uid, array(
|
$user->set($uid, array(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue