From 7ce7ec4c942e0a3567858ad0ec8e654000b49a3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Tue, 6 Aug 2013 14:18:03 +0200 Subject: prepare to multi users --- inc/poche/Poche.class.php | 36 +++++++++++++++++++----------------- inc/poche/User.class.php | 33 +++++++++++++++++++++++++++++++++ inc/poche/config.inc.php | 3 ++- 3 files changed, 54 insertions(+), 18 deletions(-) create mode 100644 inc/poche/User.class.php (limited to 'inc/poche') diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index 789d6647..2c0c73f9 100644 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php @@ -10,6 +10,7 @@ class Poche { + public $user; public $store; public $tpl; public $messages; @@ -26,17 +27,20 @@ class Poche { $this->install(); } - - $this->saveUser(); } private function init() { + Tools::initPhp(); + Session::init(); + $this->user = isset($_SESSION['poche_user']) ? $_SESSION['poche_user'] : array(); + # l10n - putenv('LC_ALL=' . LANG); - setlocale(LC_ALL, LANG); - bindtextdomain(LANG, LOCALE); - textdomain(LANG); + $language = ($this->user->getConfigValue('language')) ? $this->user->getConfigValue('language') : LANG; + putenv('LC_ALL=' . $language); + setlocale(LC_ALL, $language); + bindtextdomain($language, LOCALE); + textdomain($language); # template engine $loader = new Twig_Loader_Filesystem(TPL); @@ -48,10 +52,9 @@ class Poche $filter = new Twig_SimpleFilter('getDomain', 'Tools::getDomain'); $this->tpl->addFilter($filter); - $this->pagination = new Paginator(PAGINATION, 'p'); - - Tools::initPhp(); - Session::init(); + # Pagination + $pager = ($this->user->getConfigValue('pager')) ? $this->user->getConfigValue('pager') : PAGINATION; + $this->pagination = new Paginator($pager, 'p'); } private function install() @@ -77,12 +80,6 @@ class Poche exit(); } - private function saveUser() - { - $_SESSION['login'] = (isset ($_SESSION['login'])) ? $_SESSION['login'] : $this->store->getLogin(); - $_SESSION['pass'] = (isset ($_SESSION['pass'])) ? $_SESSION['pass'] : $this->store->getPassword(); - } - /** * Call action (mark as fav, archive, delete, etc.) */ @@ -221,7 +218,11 @@ class Poche public function login($referer) { if (!empty($_POST['login']) && !empty($_POST['password'])) { - if (Session::login($_SESSION['login'], $_SESSION['pass'], $_POST['login'], Tools::encodeString($_POST['password'] . $_POST['login']))) { + $user = $this->store->login($_POST['login'], Tools::encodeString($_POST['password'] . $_POST['login'])); + if ($user != array()) { + # Save login into Session + Session::login($user['username'], $user['password'], $_POST['login'], Tools::encodeString($_POST['password'] . $_POST['login']), array('poche_user' => new User($user))); + Tools::logm('login successful'); $this->messages->add('s', 'welcome to your poche'); if (!empty($_POST['longlastingsession'])) { @@ -248,6 +249,7 @@ class Poche { $this->messages->add('s', 'see you soon!'); Tools::logm('logout'); + $this->user = array(); Session::logout(); Tools::redirect(); } diff --git a/inc/poche/User.class.php b/inc/poche/User.class.php new file mode 100644 index 00000000..ef47730f --- /dev/null +++ b/inc/poche/User.class.php @@ -0,0 +1,33 @@ + + * @copyright 2013 + * @license http://www.wtfpl.net/ see COPYING file + */ + +class User +{ + public $id; + public $username; + public $name; + public $password; + public $email; + public $config; + + function __construct($user) + { + $this->id = $user['id']; + $this->username = $user['username']; + $this->name = $user['name']; + $this->password = $user['password']; + $this->email = $user['email']; + $this->config = $user['config']; + } + + function getConfigValue($name) { + return (isset($this->config[$name])) ? $this->config[$name] : FALSE; + } +} \ No newline at end of file diff --git a/inc/poche/config.inc.php b/inc/poche/config.inc.php index ee0f6616..d0c686f0 100644 --- a/inc/poche/config.inc.php +++ b/inc/poche/config.inc.php @@ -21,12 +21,13 @@ define ('ABS_PATH', 'assets/'); define ('TPL', './tpl'); define ('LOCALE', './locale'); define ('CACHE', './cache'); -define ('LANG', 'fr_FR.UTF8'); +define ('LANG', 'en_EN.UTF8'); define ('PAGINATION', '10'); define ('THEME', 'light'); $storage_type = 'sqlite'; # sqlite, mysql, (file, not yet) # /!\ Be careful if you change the lines below /!\ +require_once './inc/poche/User.class.php'; require_once './inc/poche/Tools.class.php'; require_once './inc/poche/Url.class.php'; require_once './inc/3rdparty/class.messages.php'; -- cgit v1.2.3