resources.frontController.defaultloc.maxlat = 70.0
resources.frontController.actionhelperpaths.Syj_Controller_Action_Helper = APPLICATION_PATH "/controllers/helpers"
resources.frontController.plugins.locale = "Syj_Controllers_Plugins_SyjLocale"
+resources.frontController.plugins.loggeduser = "Syj_Controllers_Plugins_SyjLoggedUser"
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
resources.db.adapter = "Pdo_Pgsql"
; i18n
}
public function indexAction() {
- $user = $this->view->loggedUser();
+ $user = $this->_helper->SyjSession->user();
$request = $this->getRequest();
if ($user === null) {
}
if (empty($formData)) {
- $user = $this->view->loggedUser();
+ $user = $this->_helper->SyjSession->user();
if ($user) {
$form->contact_email->setValue($user->email)
->setAttrib('readonly', 'true');
$this->view->loginform = $loginform;
$this->view->userform = $userform;
$this->view->newpwdform = $newpwdform;
+ $this->view->loggedUser = $this->_helper->SyjSession->user();
}
protected function _jsLoggedInfo(Syj_Model_Path $path = null) {
$loggedinfo = new phptojs\JsObject('gLoggedInfo', array('connections' => 0));
- $sessionStorage = Zend_Auth::getInstance()->getStorage();
- $sessionData = $sessionStorage->read();
-
- if ($sessionStorage->isEmpty()) {
- $loggedinfo->logged = false;
+ $user = $this->_helper->SyjSession->user();
+ if ($user) {
+ $loggedinfo->logged = true;
} else {
- $userMapper = new Syj_Model_UserMapper();
- $obj = new Syj_Model_User();
- if ($userMapper->find($sessionData['user'], $obj)) {
- $loggedinfo->logged = true;
- } else {
- // non existent user
- Zend_Session::start();
- Zend_Session::destroy();
- $loggedinfo->logged = false;
- }
+ $loggedinfo->logged = false;
}
if (isset($path)) {
- if ($path->owner->id == $sessionData['user']) {
+ if ($user and $path->owner->id == $user->id) {
$loggedinfo->isowner = true;
} else {
$loggedinfo->isowner = false;
}
$userid = $authAdapter->getResultRowObject('id')->id;
- $auth->getStorage()->write(array('user' => $userid));
- Zend_Session::rememberMe(); // zend default expiration delay is 2 weeks. Ok, use that value
-
+ $this->_helper->SyjSession->login($userid);
if ($httprequest) {
$api = $this->_helper->SyjApi->setCode(200);
}
public function logoutAction() {
- Zend_Session::start();
- Zend_Session::destroy();
+ $this->_helper->SyjSession->logout();
$this->redirect();
}
}
if (empty($formData)) {
- $loggeduser = $this->view->loggedUser();
+ $loggeduser = $this->_helper->SyjSession->user();
if ($loggeduser) {
$form->newpwd_email->setValue($loggeduser->email)
->setAttrib('readonly', 'true');
$user = new Syj_Model_User();
if ($userMapper->findByEmail($formData['newpwd_email'], $user)) {
// if no user exist with posted email, pretend everything went correct
- $loggeduser = isset($loggeduser) ? $loggeduser: $this->view->loggedUser();
+ $loggeduser = isset($loggeduser) ? $loggeduser: $this->_helper->SyjSession->user();
if ($loggeduser and ($loggeduser != $user)) {
throw new Syj_Exception_Request();
}
public function indexAction() {
$formData = $this->_helper->SyjPostData->getPostData('Syj_Form_Geom');
- $sessionStorage = Zend_Auth::getInstance()->getStorage();
- if ($sessionStorage->isEmpty()) {
- throw new Syj_Exception_Forbidden();
- }
- $sessionData = $sessionStorage->read();
-
- $user = new Syj_Model_User();
- $userMapper = new Syj_Model_UserMapper();
- if (!$userMapper->find($sessionData['user'], $user)) {
- // we could also throw a forbidden exception, but client session
- // should not contain reference to a non existent user. So, it's considered a bug.
+ $user = $this->_helper->SyjSession->user();
+ if (!$user) {
throw new Syj_Exception_Forbidden();
}
$title = $this->view->translate("password changed");
$this->_helper->ViewRenderer->setViewScriptPathSpec(':controller/password_validate.:suffix');
-
- // logout
- Zend_Session::start();
- Zend_Session::destroy();
+ $this->_helper->SyjSession->logout();
} else if (array_key_exists('pending_cancel', $formData)) {
if (!$pending->cancel()) {
}
}
- $auth = Zend_Auth::getInstance();
- $auth->getStorage()->write(array('user' => $user->id));
- Zend_Session::rememberMe(); // zend default expiration delay is 2 weeks. Ok, use that value
+ $this->_helper->SyjSession->login($user->id);
$this->_helper->SyjApi->setCode(200);
}
}
--- /dev/null
+<?php
+/* This file is part of Syj, Copyright (c) 2010 Arnaud Renevier,
+ and is published under the AGPL license. */
+
+class Syj_Controller_Action_Helper_SyjSession extends Zend_Controller_Action_Helper_Abstract
+{
+ protected static $cache = array();
+
+ static public function login($userid) {
+ $userMapper = new Syj_Model_UserMapper();
+ $user = new Syj_Model_User();
+ if (!$userMapper->find($userid, $user)) {
+ throw new Zend_Exception();
+ }
+
+ $storage = Zend_Auth::getInstance()->getStorage();
+ $storage->clear();
+ $storage->write(array('user' => $user->id));
+ Zend_Session::rememberMe(); // zend default expiration delay is 2 weeks. Ok, use that value
+ }
+
+ static public function logout() {
+ Zend_Session::start();
+ Zend_Session::destroy();
+ }
+
+ static public function user() {
+ try {
+ $sessionStorage = Zend_Auth::getInstance()->getStorage();
+ } catch(Exception $e) {
+ return null;
+ }
+ $sessionData = $sessionStorage->read();
+ if ($sessionStorage->isEmpty()) {
+ return null;
+ }
+
+ $id = $sessionData['user'];
+ if (!isset($id)) {
+ return null;
+ }
+ if (isset (self::$cache[$id])) {
+ return self::$cache[$id];
+ }
+
+ $userMapper = new Syj_Model_UserMapper();
+ $user = new Syj_Model_User();
+ if ($userMapper->find($id, $user)) {
+ self::$cache[$id] = $user;
+ return $user;
+ } else {
+ self::logout();
+ return null;
+ }
+ }
+}
--- /dev/null
+<?php
+/* This file is part of Syj, Copyright (c) 2010 Arnaud Renevier,
+ and is published under the AGPL license. */
+
+class Syj_Controllers_Plugins_SyjLoggedUser extends Zend_Controller_Plugin_Abstract
+{
+ public function postDispatch(Zend_Controller_Request_Abstract $request) {
+ $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
+ $view = $viewRenderer->view;
+ $sessionHelper = Zend_Controller_Action_HelperBroker::getStaticHelper('SyjSession');
+ $view->loggedUser = $sessionHelper->user();
+ }
+}
/*
* login, logout, account links
*/
-if ($this->loggedUser()) {
+if ($this->loggedUser) {
echo $this->footerLink(array(
'route' => 'account',
'action' => 'index',
+++ /dev/null
-<?php
-/* This file is part of Syj, Copyright (c) 2010 Arnaud Renevier,
- and is published under the AGPL license. */
-
-class Syj_View_Helper_LoggedUser extends Zend_View_Helper_Abstract
-{
- public function LoggedUser() {
- try {
- $sessionStorage = Zend_Auth::getInstance()->getStorage();
- } catch(Exception $e) {
- return null;
- }
- $sessionData = $sessionStorage->read();
- if ($sessionStorage->isEmpty()) {
- return null;
- }
-
- $userMapper = new Syj_Model_UserMapper();
- $user = new Syj_Model_User();
- if ($userMapper->find($sessionData['user'], $user)) {
- return $user;
- } else {
- return null;
- }
- }
-}
-
-?>
<div id="map"></div>
<div id="message" class="message info">
- <?php if (!$this->path and !$this->loggedUser()) {?>
+ <?php if (!$this->path and !$this->loggedUser) {?>
<?php echo $this->translate('Welcome on Syj.')?>
<br/>
<?php echo $this->translate('To create a journey, just click on the map to add points to your route. You can zoom and move map with controls upper left.')?>