|
@@ -0,0 +1,54 @@
|
|
|
+<?php namespace System\Session;
|
|
|
+
|
|
|
+use System\Crypt;
|
|
|
+use System\Config;
|
|
|
+
|
|
|
+class Cookie implements Driver {
|
|
|
+
|
|
|
+ public function __construct()
|
|
|
+ {
|
|
|
+ if (Config::get('application.key') == '')
|
|
|
+ {
|
|
|
+ throw new \Exception("You must set an application key before using the Cookie session driver.");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Load a session by ID.
|
|
|
+ *
|
|
|
+ * @param string $id
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function load($id)
|
|
|
+ {
|
|
|
+ if (\System\Cookie::has('session_payload'))
|
|
|
+ {
|
|
|
+ return unserialize(Crypt::decrypt(\System\Cookie::get('session_payload')));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Save a session.
|
|
|
+ *
|
|
|
+ * @param array $session
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+ public function save($session)
|
|
|
+ {
|
|
|
+ $c = \System\Config::get('session');
|
|
|
+
|
|
|
+ \System\Cookie::put('session_payload', Crypt::encrypt(serialize($session)), $c['lifetime'], $c['path'], $c['domain'], $c['https'], $c['http_only']);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Delete a session by ID.
|
|
|
+ *
|
|
|
+ * @param string $id
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+ public function delete($id)
|
|
|
+ {
|
|
|
+ \System\Cookie::forget('session_payload');
|
|
|
+ }
|
|
|
+
|
|
|
+}
|