From d9e424ecc4b2e1de88fb2e98b32024482ea37231 Mon Sep 17 00:00:00 2001 From: Gunnar Wrobel Date: Wed, 3 Mar 2010 11:28:36 +0100 Subject: [PATCH] Move the authentication check and restoring the tasklist from the session into the backend. --- framework/LoginTasks/lib/Horde/LoginTasks.php | 8 ++--- .../LoginTasks/lib/Horde/LoginTasks/Backend.php | 16 ++++++++- .../lib/Horde/LoginTasks/Backend/Horde.php | 40 ++++++++++++++++++++++ 3 files changed, 58 insertions(+), 6 deletions(-) diff --git a/framework/LoginTasks/lib/Horde/LoginTasks.php b/framework/LoginTasks/lib/Horde/LoginTasks.php index 4310b63e2..35fbfe9c2 100644 --- a/framework/LoginTasks/lib/Horde/LoginTasks.php +++ b/framework/LoginTasks/lib/Horde/LoginTasks.php @@ -78,7 +78,7 @@ class Horde_LoginTasks { if (empty(self::$_instances[$app])) { self::$_instances[$app] = new self( - new Horde_LoginTasks_Backend_Horde(), $app + new Horde_LoginTasks_Backend_Horde($app), $app ); } @@ -98,14 +98,12 @@ class Horde_LoginTasks $this->_app = $app; - if (!Horde_Auth::getAuth()) { + if (!$this->_backend->isAuthenticated()) { return; } /* Retrieves a cached tasklist or make sure one is created. */ - if (isset($_SESSION['horde_logintasks'][$app])) { - $this->_tasklist = @unserialize($_SESSION['horde_logintasks'][$app]); - } + $this->_tasklist = $this->_backend->getTaskListFromCache(); if (empty($this->_tasklist)) { $this->_createTaskList(); diff --git a/framework/LoginTasks/lib/Horde/LoginTasks/Backend.php b/framework/LoginTasks/lib/Horde/LoginTasks/Backend.php index 5d41ffc21..150260af0 100644 --- a/framework/LoginTasks/lib/Horde/LoginTasks/Backend.php +++ b/framework/LoginTasks/lib/Horde/LoginTasks/Backend.php @@ -13,6 +13,20 @@ * @author Gunnar Wrobel * @package Horde_LoginTasks */ -class Horde_LoginTasks_Backend +abstract class Horde_LoginTasks_Backend { + /** + * Is the current session authenticated? + * + * @return boolean True if the user is authenticated, false otherwise. + */ + abstract public function isAuthenticated(); + + /** + * Retrieve a cached tasklist if it exists. + * + * @return Horde_LoginTasks_Tasklist|boolean The cached task list or false + * if no task list was cached. + */ + abstract public function getTasklistFromCache(); } \ No newline at end of file diff --git a/framework/LoginTasks/lib/Horde/LoginTasks/Backend/Horde.php b/framework/LoginTasks/lib/Horde/LoginTasks/Backend/Horde.php index 11cbff8b4..544b07057 100644 --- a/framework/LoginTasks/lib/Horde/LoginTasks/Backend/Horde.php +++ b/framework/LoginTasks/lib/Horde/LoginTasks/Backend/Horde.php @@ -15,4 +15,44 @@ class Horde_LoginTasks_Backend_Horde extends Horde_LoginTasks_Backend { + /** + * The Horde application that is currently active. + * + * @var string + */ + private $_app; + + /** + * Constructor + * + * @param string $app The Horde application that is currently active. + */ + public function __construct($app) + { + $this->_app = $app; + } + + /** + * Is the current session authenticated? + * + * @return boolean True if the user is authenticated, false otherwise. + */ + public function isAuthenticated() + { + return (Horde_Auth::getAuth() !== false); + } + + /** + * Retrieve a cached tasklist if it exists. + * + * @return Horde_LoginTasks_Tasklist|boolean The cached task list or false + * if no task list was cached. + */ + public function getTasklistFromCache() + { + if (isset($_SESSION['horde_logintasks'][$this->_app])) { + return @unserialize($_SESSION['horde_logintasks'][$this->_app]); + } + return false; + } } \ No newline at end of file -- 2.11.0