adds additional logging for credential cache failures
[tine20] / tine20 / Tinebase / Auth / CredentialCache / Adapter / Cookie.php
1 <?php
2 /**
3  * Tine 2.0
4  * 
5  * @package     Tinebase
6  * @subpackage  Auth
7  * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
8  * @copyright   Copyright (c) 2011 Metaways Infosystems GmbH (http://www.metaways.de)
9  * @author      Philipp Schüle <p.schuele@metaways.de>
10  */
11
12 /**
13  * credential cache adapter (cookie)
14  *  
15  * @package     Tinebase
16  * @subpackage  Auth
17  */
18 class Tinebase_Auth_CredentialCache_Adapter_Cookie implements Tinebase_Auth_CredentialCache_Adapter_Interface
19 {
20     /**
21      * cookie key const
22      * 
23      * @var string
24      */
25     const COOKIE_KEY = 'usercredentialcache';
26     
27     /**
28      * setCache() - persists cache
29      *
30      * @param  Tinebase_Model_CredentialCache $_cache
31      */
32     public function setCache(Tinebase_Model_CredentialCache $_cache)
33     {
34         $cacheId = $_cache->getCacheId();
35         setcookie(self::COOKIE_KEY, base64_encode(Zend_Json::encode($cacheId)));
36         if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__
37             . ' Set credential cache cookie.');
38     }
39     
40     /**
41      * getCache() - get the credential cache
42      *
43      * @return NULL|Tinebase_Model_CredentialCache 
44      */
45     public function getCache()
46     {
47         $result = NULL;
48         if (isset($_COOKIE[self::COOKIE_KEY]) && ! empty($_COOKIE[self::COOKIE_KEY])) {
49             $cacheId = Zend_Json::decode(base64_decode($_COOKIE[self::COOKIE_KEY]));
50             if (is_array($cacheId)) {
51                 $result = new Tinebase_Model_CredentialCache($cacheId);
52             } else {
53                 Tinebase_Core::getLogger()->warn(__METHOD__ . '::' . __LINE__
54                     . ' Could not get CC from cookie (cache is not an array)');
55                 if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__
56                     . ' cache: ' . print_r($cacheId, true));
57             }
58         } else {
59             Tinebase_Core::getLogger()->warn(__METHOD__ . '::' . __LINE__
60                 . ' Could not get CC from cookie (could not find CC key in $_COOKIE)');
61         }
62         
63         return $result;
64     }
65
66     /**
67      * resetCache() - resets the cache
68      */
69     public function resetCache()
70     {
71         setcookie(self::COOKIE_KEY, '', time() - 3600);
72         if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' Reset credential cache cookie.');
73     }
74     
75     /**
76      * getDefaultKey() - get default cache key
77      * 
78      * @return string
79      */
80     public function getDefaultKey()
81     {
82         return Tinebase_Record_Abstract::generateUID();
83     }
84
85     /**
86      * getDefaultId() - get default cache id
87      * 
88      * @return string
89      */
90     public function getDefaultId()
91     {
92         return Tinebase_Record_Abstract::generateUID();
93     }
94 }