From 74257193f1bb5615816f880b491c156635fc0134 Mon Sep 17 00:00:00 2001 From: Josh Sherman Date: Mon, 16 Dec 2013 18:24:39 -0500 Subject: [PATCH] Built out logout procedure. --- classes/RedisModel.php | 10 ++++++++++ models/User.php | 39 +++++++++++++++++++++++++++++++++++---- modules/logout.php | 14 ++++++++++++++ modules/user/create.php | 2 +- 4 files changed, 60 insertions(+), 5 deletions(-) create mode 100644 modules/logout.php diff --git a/classes/RedisModel.php b/classes/RedisModel.php index 31668e0..b02f770 100644 --- a/classes/RedisModel.php +++ b/classes/RedisModel.php @@ -85,6 +85,16 @@ class RedisModel extends Object switch ($base) { 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]); break; diff --git a/models/User.php b/models/User.php index 7b572d9..a66c4a1 100644 --- a/models/User.php +++ b/models/User.php @@ -4,16 +4,47 @@ class User extends RedisModel { 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'])) { - 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_token = $user->getAuth($uid); + $auth_token = $user->getAuth($cookie['uid']); - return $user_token === $auth_token; + return $auth_token === $cookie['token']; } } } diff --git a/modules/logout.php b/modules/logout.php new file mode 100644 index 0000000..c88e140 --- /dev/null +++ b/modules/logout.php @@ -0,0 +1,14 @@ +setAuth($user->getAuthenticated('uid'), $user->generateToken()); + + Browser::goHome(); + } +} + +?> diff --git a/modules/user/create.php b/modules/user/create.php index f9d89a8..7751938 100644 --- a/modules/user/create.php +++ b/modules/user/create.php @@ -38,7 +38,7 @@ class user_create extends AnonymousModule $uid = $user->nextUID(); // Generates the auth token - $auth_token = sha1(mt_rand() . microtime()); + $auth_token = $user->generateToken(); // Writes the user data $user->set($uid, array(