From bce65bd3da7cf3db3f17bf1359e7527eac64852e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Skej=C3=B8?= Date: Wed, 10 Dec 2008 12:55:57 +0100 Subject: [PATCH] Updates in User-module Added activation and more gui --- modules/User/User.php | 68 ++++++++++++++++++++++++++++++++++++++------ modules/User/UserHandler.php | 47 ++++++++++++++++++++++++++---- 2 files changed, 101 insertions(+), 14 deletions(-) diff --git a/modules/User/User.php b/modules/User/User.php index 12ad13d..0159be9 100644 --- a/modules/User/User.php +++ b/modules/User/User.php @@ -1,5 +1,16 @@ core()->getModule("Reciever"); + $p = $this->core()->getModule("Paginator"); + require_once("UserHandler.php"); + $handler = new UserHandler($this->core()); + + if ($p->numOptions() > 0) { + switch (array_shift($p->options())) { + case("create"): + if (!$r->getModel("POST")) { + return '
+ Brugernavn:
+ Kodeord:
+ E-mail:
+ +
'; + } + else { + $m = $r->getModel("POST"); + if (!$handler->createUser($m)) { + return 'Creation failed!'; + } + return 'User created'; + } + break; + case("activate"): + if (!$r->getModel("POST")) { + return '
+ Brugernavn:
+ Kodeord:
+ +
'; + } + else { + $m = $r->getModel("POST"); + if (!$handler->activateUser($m)) { + return 'Activation failed!'; + } + return 'User activated'; + } + break; + default: + break; + } + } + if (!$this->loggedIn()) { - $r = $this->core()->getModule("Reciever"); if (!$r->getModel("POST")) { - print ' + return '
Brugernavn:
Kodeord:
- + Opret
'; } else { - require_once("UserHandler.php"); - $handler = new UserHandler($this->core()); $m = $r->getModel("POST"); if (!$handler->login($m)) { - print "Login failed!"; - return false; + return "Login failed!"; } } } else { - print "Logged in as ".$this->username(); + return "Logged in as ".$this->username(); } } diff --git a/modules/User/UserHandler.php b/modules/User/UserHandler.php index 1c2f4a5..c229243 100644 --- a/modules/User/UserHandler.php +++ b/modules/User/UserHandler.php @@ -50,11 +50,12 @@ class UserHandler extends AOOSModule "PASSWORD" => $password, "ACTIVATED" => 1 ); - if (!($m = $this->_storageObj->selectModel("*", $where))) { + if ($this->_storageObj->numRows($where) == 0) { throw new AOOSException($this->core(), $this->tr("login_failed", "User"), $this->tr("check_user_pass_active", "User"), true, 1); return false; } + $m = $this->_storageObj->selectModel("*", $where); // Set the userdata $u->setUsername($m->getColumn("USERNAME", true)); $u->setPassword($m->getColumn("PASSWORD", true)); @@ -72,8 +73,8 @@ class UserHandler extends AOOSModule * @return bool */ public function createUser($data) { - $username = $data->getColumn("USERNAME"); - $where = array("USERNAME" => $username); + $username = $data->getColumn("USERNAME", true); + $where = array("USERNAME" => "'".$username."'"); if ($this->_storageObj->numRows($where) != 0) { throw new AOOSException($this->core(), $this->tr("username_taken", "User"), "", true, 1); return false; @@ -87,12 +88,46 @@ class UserHandler extends AOOSModule ); // Encryption of password - $uPass = $data->getColumn("PASSWORD"); - $pass = hash("sha256", $uPass[0]); + $uPass = $data->getColumn("PASSWORD", true); + $pass = hash("sha256", $uPass); $data->setData($pass, -1, "PASSWORD"); $data->setColumnIndex($fields); - return $this->_storageObj->insertModel($data); + $data->setQuote(true); + if ($this->_storageObj->insertModel($data)) { + // XXX Send email + return true; + } + return false; + } + + /** + * Activates a given user + * @param AOOSModel $data A model containing username and password + * @return bool + */ + public function activateUser($data) { + $username = $data->getColumn("USERNAME", true); + $password = hash("sha256", $data->getColumn("PASSWORD", true)); + $data->setData($password, -1, "PASSWORD"); + + $where = array( + "USERNAME" => "'".$username."'", + "PASSWORD" => "'".$password."'", + "ACTIVATED" => 0 + ); + $fields = array_keys($where); + $data->setColumnIndex($fields); + print_r($where); + + if ($this->_storageObj->numRows($where) == 0) { + throw new AOOSException($this->core(), $this->tr("user_not_activatable", "User"), "", true, 1); + return false; + } + + $data->setData(1, -1, "ACTIVATED"); + $data->setQuote(true); + return $this->_storageObj->updateFromModel($data, $where); } /** -- 2.11.4.GIT