From 7f15fb107344f5e876df6f053004415ea1759c70 Mon Sep 17 00:00:00 2001 From: emkael Date: Tue, 25 Oct 2016 18:59:02 +0200 Subject: * saving and restoring user data from cookie --- app/frontend/user/DbUser.php | 36 ++++++++++++++++++++++++++++++++++++ app/frontend/user/config.xml | 3 ++- 2 files changed, 38 insertions(+), 1 deletion(-) (limited to 'app/frontend/user') diff --git a/app/frontend/user/DbUser.php b/app/frontend/user/DbUser.php index d636e8b..e398cb0 100644 --- a/app/frontend/user/DbUser.php +++ b/app/frontend/user/DbUser.php @@ -19,6 +19,16 @@ class DbUser extends TDbUser { return $this->_record; } + private $_authKey; + + public function setAuthKey($key) { + $this->_authKey = $key; + } + + public function getAuthKey() { + return $this->_authKey; + } + public function createUser($username) { $dbUser = UserFacade::getInstance()->findByLogin($username); if (!$dbUser) { @@ -47,6 +57,32 @@ class DbUser extends TDbUser { } } + public function createUserFromCookie($cookie) { + $userFacade = UserFacade::getInstance(); + try { + $userData = $userFacade->getUserFromCookieData($cookie); + if ($userData) { + $user = $this->createUser($userData->User); + $user->AuthKey = $userData->Key; + return $user; + } + return NULL; + } catch (TInvalidDataException $e) { + return NULL; + } + return NULL; + } + + public function saveUserToCookie($cookie) { + $userFacade = UserFacade::getInstance(); + $authKey = $userFacade->createUserAuthKey($this); + if ($authKey) { + $cookieData = $userFacade->compileCookieData($authKey); + $cookie->setValue($cookieData); + $cookie->setExpire(4294967296); // 2**32 + } + } + public function __call($name, $args) { $match = []; if (preg_match('/^getIs(.+)$/', $name, $match)) { diff --git a/app/frontend/user/config.xml b/app/frontend/user/config.xml index 80027e5..d4ca867 100644 --- a/app/frontend/user/config.xml +++ b/app/frontend/user/config.xml @@ -2,7 +2,8 @@ + UserManager="users" LoginPage="Login" + AllowAutoLogin="true" /> -- cgit v1.2.3