diff --git a/lib/plugins/usermanager/admin.php b/lib/plugins/usermanager/admin.php index f0af93b48e8ee426f8c81816b3e323d54fd8e6ff..715833843d7679ff1b1e28927a58ca4b18dfecf8 100644 --- a/lib/plugins/usermanager/admin.php +++ b/lib/plugins/usermanager/admin.php @@ -244,7 +244,7 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin { } - /** + /** * @todo disable fields which the backend can't change */ function _htmlUserForm($cmd,$user=null,$indent=0) { @@ -262,11 +262,13 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin { ptln(" <tr><th>".$this->lang["field"]."</th><th>".$this->lang["value"]."</th></tr>",$indent); ptln(" </thead>",$indent); ptln(" <tbody>",$indent); - ptln(" <tr><td><label for=\"".$cmd."_userid\" >".$this->lang["user_id"]." : </label></td><td><input type=\"text\" id=\"".$cmd."_userid\" name=\"userid\" value=\"".$user."\" /></td></tr>",$indent); - ptln(" <tr><td><label for=\"".$cmd."_userpass\" >".$this->lang["user_pass"]." : </label></td><td><input type=\"text\" id=\"".$cmd."_userpass\" name=\"userpass\" value=\"\" /></td></tr>",$indent); - ptln(" <tr><td><label for=\"".$cmd."_username\" >".$this->lang["user_name"]." : </label></td><td><input type=\"text\" id=\"".$cmd."_username\" name=\"username\" value=\"".$name."\" /></td></tr>",$indent); - ptln(" <tr><td><label for=\"".$cmd."_usermail\" >".$this->lang["user_mail"]." : </label></td><td><input type=\"text\" id=\"".$cmd."_usermail\" name=\"usermail\" value=\"".$mail."\" /></td></tr>",$indent); - ptln(" <tr><td><label for=\"".$cmd."_usergroups\" >".$this->lang["user_groups"]." : </label></td><td><input type=\"text\" id=\"".$cmd."_usergroups\" name=\"usergroups\" value=\"".$groups."\" /></td></tr>",$indent); + + $this->_htmlInputField($cmd."_userid", "userid", $this->lang["user_id"], $user, $this->_auth->canDo("modLogin"), $indent+6); + $this->_htmlInputField($cmd."_userpass", "userpass", $this->lang["user_pass"], "", $this->_auth->canDo("modPass"), $indent+6); + $this->_htmlInputField($cmd."_username", "username", $this->lang["user_name"], $name, $this->_auth->canDo("modName"), $indent+6); + $this->_htmlInputField($cmd."_usermail", "usermail", $this->lang["user_mail"], $mail, $this->_auth->canDo("modMail"), $indent+6); + $this->_htmlInputField($cmd."_usergroups","usergroups",$this->lang["user_groups"],$groups,$this->_auth->canDo("modGroups"),$indent+6); + ptln(" </tbody>",$indent); ptln(" <tbody>",$indent); ptln(" <tr>",$indent); @@ -287,6 +289,12 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin { ptln(" </table>",$indent); ptln("</form>",$indent); } + + function _htmlInputField($id, $name, $label, $value, $cando, $indent=0) { + $disabled = $cando ? "" : " disabled=\"disabled\""; + $class = $cando ? "" : " class=\"disabled\""; + ptln("<tr".$class."><td><label for=\"".$id."\" >".$label." : </label></td><td><input type=\"text\" id=\"".$id."\" name=\"".$name."\" value=\"".$value."\"".$disabled." /></td></tr>",$indent); + } function _htmlFilter($key) { if (empty($this->_filter)) return ''; @@ -340,17 +348,23 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin { function _modifyUser(){ if (!$this->_auth->canDo('UserMod')) return false; - /* get currently valid user data */ + // get currently valid user data $olduser = cleanID(preg_replace('/.*:/','',$_REQUEST['userid_old'])); $oldinfo = $this->_auth->getUserData($olduser); - - /* get new user data subject to change */ + + // get new user data subject to change list($newuser,$newpass,$newname,$newmail,$newgrps) = $this->_retrieveUser(); if (empty($newuser)) return false; $changes = array(); if ($newuser != $olduser) { - /* check if $newuser already exist */ + + if (!$this->_auth->canDo('modLogin')) { // sanity check, shouldn't be possible + msg($this->lang['update_fail'],-1); + return false; + } + + // check if $newuser already exists if ($this->_auth->getUserData($newuser)) { msg(sprintf($this->lang['update_exists'],$newuser),-1); $this->_edit_user = $olduser; @@ -359,16 +373,16 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin { } } - if (!empty($newpass)) - $changes['pass'] = $newpass; - if (!empty($newname) && $newname != $oldinfo['name']) - $changes['name'] = $newname; - if (!empty($newmail) && $newmail != $oldinfo['mail']) - $changes['mail'] = $newmail; - if (!empty($newgrps) && $newgrps != $oldinfo['grps']) - $changes['grps'] = $newgrps; + if (!empty($newpass) && $this->_auth->canDo('modPass')) + $changes['pass'] = $newpass; + if (!empty($newname) && $this->_auth->canDo('modName') && $newname != $oldinfo['name']) + $changes['name'] = $newname; + if (!empty($newmail) && $this->_auth->canDo('modMail') && $newmail != $oldinfo['mail']) + $changes['mail'] = $newmail; + if (!empty($newgrps) && $this->_auth->canDo('modGroups') && $newgrps != $oldinfo['grps']) + $changes['grps'] = $newgrps; - if ($this->_auth->modifyUser($olduser, $changes)) { + if ($this->_auth->modifyUser($olduser, $changes)) { msg($this->lang['update_ok'],1); } else { msg($this->lang['update_fail'],-1); diff --git a/lib/plugins/usermanager/style.css b/lib/plugins/usermanager/style.css new file mode 100644 index 0000000000000000000000000000000000000000..011632f5e8ca2995c75db98b5a5ae103428ff603 --- /dev/null +++ b/lib/plugins/usermanager/style.css @@ -0,0 +1,6 @@ +/* User Manager specific styles */ +.disabled { + color: #6f6f6f; + background: #e4e4e4; +} +