732f5cbb84b56db3e7f761a5de3887457333ca65
[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__ . ' Set credential cache cookie.');
37     }
38     
39     /**
40      * getCache() - get the credential cache
41      *
42      * @return NULL|Tinebase_Model_CredentialCache 
43      */
44     public function getCache()
45     {
46         $result = NULL;
47         if (isset($_COOKIE[self::COOKIE_KEY]) && ! empty($_COOKIE[self::COOKIE_KEY])) {
48             $cacheId = Zend_Json::decode(base64_decode($_COOKIE[self::COOKIE_KEY]));
49             if (is_array($cacheId)) {
50                 $result = new Tinebase_Model_CredentialCache($cacheId);
51             } else {
52                 Tinebase_Core::getLogger()->warn(__METHOD__ . '::' . __LINE__ . ' Something went wrong with the CredentialCache / could not get CC from cookie.');
53             }
54         }
55         
56         return $result;
57     }
58
59     /**
60      * resetCache() - resets the cache
61      */
62     public function resetCache()
63     {
64         setcookie(self::COOKIE_KEY, '', time() - 3600);
65         if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' Reset credential cache cookie.');
66     }
67     
68     /**
69      * getDefaultKey() - get default cache key
70      * 
71      * @return string
72      */
73     public function getDefaultKey()
74     {
75         return Tinebase_Record_Abstract::generateUID();
76     }
77
78     /**
79      * getDefaultId() - get default cache id
80      * 
81      * @return string
82      */
83     public function getDefaultId()
84     {
85         return Tinebase_Record_Abstract::generateUID();
86     }
87 }