From 8c69fd9b2e824114ee3cd0f6a7dcddc7e31d913c Mon Sep 17 00:00:00 2001 From: deva Date: Sun, 28 Feb 2010 10:20:09 +0000 Subject: Added users module. Made new password lineedit widget. --- utils/modules/users.php | 181 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 181 insertions(+) create mode 100644 utils/modules/users.php (limited to 'utils/modules/users.php') diff --git a/utils/modules/users.php b/utils/modules/users.php new file mode 100644 index 0000000..7e6fcd9 --- /dev/null +++ b/utils/modules/users.php @@ -0,0 +1,181 @@ + "add", + "Edit user" => "edit", + "Delete user" => "delete"); + + public function admin_add($action, $vars) + { + global $UID, $GLOBALS; + + switch($action) { + case "add": + $modulesel = $GLOBALS["modulesel"]; + + $modstr = ""; + foreach($modulesel as $m) { + if($modstr != "") $modstr .= " "; + $modstr .= $m; + } + + $all = true; + foreach(getModuleList() as $m) { + if(in_array($m, $modulesel) == false) $all = false; + } + + if($all == true) $modstr = "*"; + + $pwd = sha1(md5($vars["password"])); + $user = new User($vars["username"], $pwd, $modstr); + $this->users->add($user); + $this->users->write(); + break; + + default: + $modules = array(); + foreach(getModuleList() as $m) { + $modules[$m] = false; + } + $form = new Form("add"); + $form->addWidget(new LineEdit("Username:", "username", "")); + $form->addWidget(new LineEditPwd("Password:", "password", "")); + $form->addWidget(new MultiList("Modules:", "modulesel", + $modules)); + $form->addWidget(new Button("Add")); + $form->render(); + break; + } + } + + public function admin_edit($action, $vars) + { + global $UID, $GLOBALS; + + switch($action) { + case "write": + $modulesel = $GLOBALS["modulesel"]; + + $modstr = ""; + foreach($modulesel as $m) { + if($modstr != "") $modstr .= " "; + $modstr .= $m; + } + + $all = true; + foreach(getModuleList() as $m) { + if(in_array($m, $modulesel) == false) $all = false; + } + + if($all == true) $modstr = "*"; + + $user = $this->users->findUser($vars["edtuser"]); + + if($vars["password"] != "") { + $pwd = sha1(md5($vars["password"])); + $user->password = $pwd; + } + $user->modules = $modstr; + $this->users->write(); + break; + + case "edit": + + $user = $this->users->findUser($vars["edtuser"]); + + $modules = array(); + foreach(getModuleList() as $m) { + $modules[$m] = $user->checkModule($m); + } + $form = new Form("write"); + $form->addWidget(new Hidden(array("edtuser" => $user->userid))); + $form->addWidget(new LineEditPwd("Password:", "password", "")); + $form->addWidget(new MultiList("Modules:", "modulesel", + $modules)); + $form->addWidget(new Button("Edit")); + $form->render(); + break; + + default: + $userlist = array(); + + foreach($this->users->useridList() as $u) { + $userlist[$u] = $u; + } + + $form = new Form("edit"); + $form->addWidget(new ComboBox("Select user to edit:", "edtuser", "", + $userlist)); + $form->addWidget(new Button("Edit...")); + $form->render(); + break; + } + } + + public function admin_delete($action, $vars) + { + global $UID, $GLOBALS; + + switch($action) { + case "delete": + if($vars["deluser"] == "admin") { + echo "

ERROR: You cannot delete the 'admin' user.

"; + return; + } + $this->users->delete($vars["deluser"]); + $this->users->write(); + break; + + default: + $userlist = array(); + + foreach($this->users->useridList() as $u) { + $userlist[$u] = $u; + } + + $form = new Form("delete"); + $form->addWidget(new ComboBox("Select user to delete:", "deluser", "", + $userlist)); + $form->addWidget(new Button("Delete")); + $form->render(); + break; + } + } + + public function admin($sub, $action, $vars) + { + switch($sub) { + case "add": + $this->admin_add($action, $vars); + break; + case "edit": + $this->admin_edit($action, $vars); + break; + case "delete": + $this->admin_delete($action, $vars); + break; + } + } + + + public function UsersAdm($file) + { + $this->users = new Users($file); + } +} + +function users_init() +{ + global $DATA_DIR; + return new UserSAdm($DATA_DIR . "/users.xml"); +} + +?> \ No newline at end of file -- cgit v1.2.3