Skip to content
This repository has been archived by the owner on Sep 10, 2021. It is now read-only.

Commit

Permalink
Refactor cookie creation
Browse files Browse the repository at this point in the history
  • Loading branch information
Jamie Snape committed Oct 21, 2015
1 parent f87ec17 commit 7275b57
Show file tree
Hide file tree
Showing 9 changed files with 156 additions and 116 deletions.
36 changes: 25 additions & 11 deletions core/Bootstrap.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
protected function _initDoctype()
{
$this->bootstrap('view');

/** @var Zend_View $view */
$view = $this->getResource('view');
$view->doctype('XHTML1_STRICT');
}
Expand Down Expand Up @@ -111,6 +113,8 @@ protected function _initDatabase()
protected function _initErrorHandle()
{
$this->bootstrap(array('Config', 'Logger'));

/** @var Zend_Log $logger */
$logger = $this->getResource('Logger');

Zend_Registry::set('components', array());
Expand All @@ -128,7 +132,9 @@ protected function _initErrorHandle()
*/
protected function _initInternationalization()
{
$this->bootstrap(array('Config', 'Database'));
$this->bootstrap(array('Config', 'Database', 'FrontController'));

/** @var false|Zend_Db_Adapter_Abstract $database */
$database = $this->getResource('Database');

if ((int) Zend_Registry::get('configGlobal')->get('internationalization', 0) === 1) {
Expand All @@ -144,18 +150,17 @@ protected function _initInternationalization()
$language = 'en';
}

/** @var Zend_Controller_Front $frontController */
$frontController = $this->getResource('FrontController');

/** @var Zend_Controller_Request_Http $request */
$request = $frontController->getRequest();

$date = new DateTime();
$interval = new DateInterval('P1M');
setcookie(
MIDAS_LANGUAGE_COOKIE_NAME,
$language,
$date->add($interval)->getTimestamp(),
'/',
!empty($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'],
(int) Zend_Registry::get('configGlobal')->get('cookie_secure',
1) === 1,
true
);
$expires = $date->add($interval);

UtilityComponent::setCookie($request, MIDAS_LANGUAGE_COOKIE_NAME, $language, $expires);
}

if ($database !== false) {
Expand Down Expand Up @@ -249,6 +254,8 @@ protected function _initZFDebug()
);

$debug = new ZFDebug_Controller_Plugin_Debug($options);

/** @var Zend_Controller_Front $frontController */
$frontController = $this->getResource('FrontController');
$frontController->registerPlugin($debug);
}
Expand All @@ -258,6 +265,8 @@ protected function _initZFDebug()
protected function _initFrontModules()
{
$this->bootstrap('FrontController');

/** @var Zend_Controller_Front $frontController */
$frontController = $this->getResource('FrontController');
$frontController->addModuleDirectory(BASE_PATH.'/modules');

Expand All @@ -275,6 +284,8 @@ protected function _initSass()
{
$this->bootstrap(array('Config', 'Logger'));
$config = Zend_Registry::get('configGlobal');

/** @var Zend_Log $logger */
$logger = $this->getResource('Logger');
if ($config->environment == 'development') {
$directory = new RecursiveDirectoryIterator(BASE_PATH);
Expand Down Expand Up @@ -334,6 +345,7 @@ protected function _initRouter()
{
$this->bootstrap(array('Config', 'Database', 'FrontController'));

/** @var Zend_Controller_Front $frontController */
$frontController = $this->getResource('FrontController');
$frontController->addControllerDirectory(BASE_PATH.'/core/controllers');

Expand Down Expand Up @@ -428,6 +440,8 @@ protected function _initRouter()
protected function _initREST()
{
$this->bootstrap('FrontController');

/** @var Zend_Controller_Front $frontController */
$frontController = $this->getResource('FrontController');

// register the RestHandler plugin
Expand Down
2 changes: 1 addition & 1 deletion core/controllers/CommunityController.php
Original file line number Diff line number Diff line change
Expand Up @@ -660,7 +660,7 @@ public function createAction()
{
$this->requireAdminPrivileges();
$form = $this->Form->Community->createCreateForm();
if ($this->_request->isPost() && $form->isValid($this->getRequest()->getPost())
if ($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())
) {
$name = $form->getValue('name');
$description = $form->getValue('description');
Expand Down
13 changes: 4 additions & 9 deletions core/controllers/FeedController.php
Original file line number Diff line number Diff line change
Expand Up @@ -53,17 +53,12 @@ public function indexAction()
if (isset($cookieData) && is_numeric($cookieData)) {
$this->view->lastFeedVisit = $cookieData;
}

$date = new DateTime();
$interval = new DateInterval('P1M');
setcookie(
$cookieName,
$date->getTimestamp(),
$date->add($interval)->getTimestamp(),
'/',
$request->getHttpHost(),
(int) Zend_Registry::get('configGlobal')->get('cookie_secure', 1) === 1,
true
);
$expires = $date->add($interval);

UtilityComponent::setCookie($request, $cookieName, $date->getTimestamp(), $expires);
}

$this->addDynamicHelp(
Expand Down
13 changes: 4 additions & 9 deletions core/controllers/ItemController.php
Original file line number Diff line number Diff line change
Expand Up @@ -188,17 +188,12 @@ public function viewAction()
}
$recentItems = array_reverse($tmp);
$recentItems[] = $itemDao->getKey();

$date = new DateTime();
$interval = new DateInterval('P1M');
setcookie(
$cookieName,
serialize($recentItems),
$date->add($interval)->getTimestamp(),
'/',
$request->getHttpHost(),
(int) Zend_Registry::get('configGlobal')->get('cookie_secure', 1) === 1,
true
);
$expires = $date->add($interval);

UtilityComponent::setCookie($request, $cookieName, serialize($recentItems), $expires);
}

$this->Item->incrementViewCount($itemDao);
Expand Down
86 changes: 38 additions & 48 deletions core/controllers/UserController.php
Original file line number Diff line number Diff line change
Expand Up @@ -158,18 +158,16 @@ public function logoutAction()
$notifier->callback('CALLBACK_CORE_USER_LOGOUT');
$this->userSession->Dao = null;
Zend_Session::ForgetMe();

/** @var Zend_Controller_Request_Http $request */
$request = $this->getRequest();

$date = new DateTime();
$interval = new DateInterval('P1M');
setcookie(
MIDAS_USER_COOKIE_NAME,
null,
$date->sub($interval)->getTimestamp(),
'/',
$request->getHttpHost(),
(int) Zend_Registry::get('configGlobal')->get('cookie_secure', 1) === 1,
true
);
$expires = $date->sub($interval);

UtilityComponent::setCookie($request, MIDAS_USER_COOKIE_NAME, false, $expires);

$noRedirect = $this->getParam('noRedirect');
if (isset($noRedirect)) {
$this->disableView();
Expand Down Expand Up @@ -499,18 +497,17 @@ public function ajaxloginAction()
if ($userDao->getSalt() == '') {
$passwordHash = $this->User->convertLegacyPasswordHash($userDao, $form->getValue('password'));
}

/** @var Zend_Controller_Request_Http $request */
$request = $this->getRequest();
$date = new DateTime();
$interval = new DateInterval('P1M');
setcookie(
MIDAS_USER_COOKIE_NAME,
$userDao->getKey().'-'.$passwordHash,
$date->add($interval)->getTimestamp(),
'/',
$request->getHttpHost(),
(int) Zend_Registry::get('configGlobal')->get('cookie_secure', 1) === 1,
true
);
$expires = $date->add($interval);

$value = $userDao->getKey().'-'.$passwordHash;

UtilityComponent::setCookie($request, MIDAS_USER_COOKIE_NAME, $value, $expires);

Zend_Session::start();
$user = new Zend_Session_Namespace('Auth_User');
$user->setExpirationSeconds(60 * (int) Zend_Registry::get('configGlobal')->get('session_lifetime', 20));
Expand All @@ -526,17 +523,20 @@ public function ajaxloginAction()
/** Login action */
public function loginAction()
{
/** @var Zend_Controller_Request_Http $request */
$request = $this->getRequest();
$this->Form->User->uri = $request->getRequestUri();

/** @var Zend_Form $form */
$form = $this->Form->User->createLoginForm();
$this->view->form = $this->getFormAsArray($form);
$this->disableLayout();
if ($this->_request->isPost()) {
$this->disableView();
$previousUri = $this->getParam('previousuri');
if ($form->isValid($request->getPost())) {
$notifications = array();
try {
$notifications = array(); // initialize first in case of exception
$notifications = Zend_Registry::get('notifier')->callback(
'CALLBACK_CORE_AUTHENTICATION',
array('email' => $form->getValue('email'), 'password' => $form->getValue('password'))
Expand All @@ -545,6 +545,7 @@ public function loginAction()
$this->getLogger()->crit($exc->getMessage());
}
$authModule = false;
$userDao = false;
foreach ($notifications as $user) {
if ($user) {
$userDao = $user;
Expand Down Expand Up @@ -585,6 +586,9 @@ public function loginAction()
} elseif (!$authModule) {
$passwordHash = md5($instanceSalt.$form->getValue('password'));
$coreAuth = $this->User->legacyAuthenticate($userDao, $instanceSalt, $form->getValue('password'));
} else {
$passwordHash = false;
$coreAuth = false;
}

if ($authModule || $coreAuth) {
Expand All @@ -603,30 +607,19 @@ public function loginAction()
) {
$passwordHash = $this->User->convertLegacyPasswordHash($userDao, $form->getValue('password'));
}
$remember = $form->getValue('remerberMe');

$remember = (int) $form->getValue('remerberMe');
if (!$this->isTestingEnv()) {
$date = new DateTime();
$interval = new DateInterval('P1M');
if (!$authModule && isset($remember) && $remember == 1) {
setcookie(
MIDAS_USER_COOKIE_NAME,
$userDao->getKey().'-'.$passwordHash,
$date->add($interval)->getTimestamp(),
'/',
$request->getHttpHost(),
(int) Zend_Registry::get('configGlobal')->get('cookie_secure', 1) === 1,
true
);

if (!$authModule && $remember === 1) {
$expires = $date->add($interval);
$value = $userDao->getKey().'-'.$passwordHash;
UtilityComponent::setCookie($request, MIDAS_USER_COOKIE_NAME, $value, $expires);
} else {
setcookie(
MIDAS_USER_COOKIE_NAME,
null,
$date->sub($interval)->getTimestamp(),
'/',
$request->getHttpHost(),
(int) Zend_Registry::get('configGlobal')->get('cookie_secure', 1) === 1,
true
);
$expires = $date->sub($interval);
UtilityComponent::setCookie($request, MIDAS_USER_COOKIE_NAME, false, $expires);
Zend_Session::start();
$user = new Zend_Session_Namespace('Auth_User');
$user->setExpirationSeconds(60 * (int) Zend_Registry::get('configGlobal')->get('session_lifetime', 20));
Expand Down Expand Up @@ -1330,18 +1323,15 @@ public function deleteAction()
session_start();
$this->userSession->Dao = null;
Zend_Session::ForgetMe();

/** @var Zend_Controller_Request_Http $request */
$request = $this->getRequest();

$date = new DateTime();
$interval = new DateInterval('P1M');
setcookie(
MIDAS_USER_COOKIE_NAME,
null,
$date->sub($interval)->getTimestamp(),
'/',
$request->getHttpHost(),
(int) Zend_Registry::get('configGlobal')->get('cookie_secure', 1) === 1,
true
);
$expires = $date->sub($interval);

UtilityComponent::setCookie($request, MIDAS_USER_COOKIE_NAME, false, $expires);
}
}
$this->_helper->viewRenderer->setNoRender();
Expand Down
15 changes: 15 additions & 0 deletions core/controllers/components/UtilityComponent.php
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ public function getAllModules()
*/
public static function extractPathParams()
{
/** @var Zend_Controller_Request_Http $request */
$request = Zend_Controller_Front::getInstance()->getRequest();
$allTokens = preg_split('@/@', $request->getPathInfo(), null, PREG_SPLIT_NO_EMPTY);

Expand Down Expand Up @@ -939,4 +940,18 @@ public static function realpath($path)

return $realpath;
}

/**
* Send a cookie with the rest of the HTTP headers.
*
* @param Zend_Controller_Request_Http $request HTTP request
* @param string $name name of the cookie
* @param false|string $value value of the cookie
* @param DateTime $expires time the cookie expires
*/
public static function setCookie($request, $name, $value, $expires)
{
$secure = (int) Zend_Registry::get('configGlobal')->get('cookie_secure', 1) === 1;
setcookie($name, $value, $expires->getTimestamp(), '/', $request->getHttpHost(), $secure, true);
}
}
28 changes: 10 additions & 18 deletions modules/googleauth/Notification.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ class Googleauth_Notification extends MIDAS_Notification
/** @var array */
public $_models = array('Setting', 'User', 'Userapi');

/** @var array */
public $_moduleComponents = array('Cookie');

/** @var array */
public $_moduleModels = array('User');

Expand Down Expand Up @@ -133,15 +136,9 @@ public function checkUserCookie($args)

$date = new DateTime();
$interval = new DateInterval('P1M');
setcookie(
GOOGLE_AUTH_ACCESS_TOKEN_COOKIE_NAME,
$client->getAccessToken(),
$date->add($interval)->getTimestamp(),
'/',
$request->getHttpHost(),
(int) Zend_Registry::get('configGlobal')->get('cookie_secure', 1) === 1,
true
);
$expires = $date->add($interval);

$this->ModuleComponent->Cookie->setAccessTokenCookie($request, $client, $expires);
}
}

Expand All @@ -160,16 +157,11 @@ public function handleUserLogout($args)
{
/** @var Zend_Controller_Request_Http $request */
$request = Zend_Controller_Front::getInstance()->getRequest();

$date = new DateTime();
$interval = new DateInterval('P1M');
setcookie(
GOOGLE_AUTH_ACCESS_TOKEN_COOKIE_NAME,
null,
$date->sub($interval)->getTimestamp(),
'/',
$request->getHttpHost(),
(int) Zend_Registry::get('configGlobal')->get('cookie_secure', 1) === 1,
true
);
$expires = $date->sub($interval);

$this->ModuleComponent->Cookie->setAccessTokenCookie($request, false, $expires);
}
}
Loading

0 comments on commit 7275b57

Please sign in to comment.