- Added support in MySQL auth to prohibit users from modifying their password.

git-svn-id: http://www.observium.org/svn/observer/trunk@2252 61d68cd4-352d-0410-923a-c4978735b2b8
This commit is contained in:
Geert Hauwaerts
2011-05-05 14:54:12 +00:00
parent 209313da20
commit 9202ff9bee
4 changed files with 27 additions and 10 deletions

View File

@@ -0,0 +1 @@
ALTER TABLE users ADD can_modify_passwd TINYINT NOT NULL DEFAULT 1;

View File

@@ -27,9 +27,20 @@ function authenticate($username,$password)
return 0; return 0;
} }
function passwordscanchange() function passwordscanchange($username="")
{ {
/*
* By default allow the password to be modified, unless the existing
* user is explicitly prohibited to do so.
*/
if (empty($username) || !user_exists($username)) {
return 1; return 1;
} else {
return @mysql_result(mysql_query("SELECT can_modify_passwd FROM users WHERE username = '".mres($username)."'"),0);
}
} }
/** /**
@@ -65,12 +76,12 @@ function auth_usermanagement()
return 1; return 1;
} }
function adduser($username, $password, $level, $email = "", $realname = "") function adduser($username, $password, $level, $email = "", $realname = "", $can_modify_passwd='1')
{ {
if (!user_exists($username)) if (!user_exists($username))
{ {
$encrypted = crypt($password,'$1$' . generateSalt(8).'$'); $encrypted = crypt($password,'$1$' . generateSalt(8).'$');
mysql_query("INSERT INTO `users` (`username`,`password`,`level`, `email`, `realname`) VALUES ('".mres($username)."','".mres($encrypted)."','".mres($level)."','".mres($email)."','".mres($realname)."')"); mysql_query("INSERT INTO `users` (`username`,`password`,`level`, `email`, `realname`, `can_modify_passwd`) VALUES ('".mres($username)."','".mres($encrypted)."','".mres($level)."','".mres($email)."','".mres($realname)."','".mres($can_modify_passwd)."')");
} }
return mysql_affected_rows(); return mysql_affected_rows();

View File

@@ -18,8 +18,15 @@ else
{ {
if (!user_exists($_POST['new_username'])) if (!user_exists($_POST['new_username']))
{ {
if (isset($_POST['can_modify_passwd'])) {
$_POST['can_modify_passwd'] = 1;
} else {
$_POST['can_modify_passwd'] = 0;
}
# FIXME: missing email field here on the form # FIXME: missing email field here on the form
if (adduser($_POST['new_username'], $_POST['new_password'], $_POST['new_level'], '', $_POST['realname'])) if (adduser($_POST['new_username'], $_POST['new_password'], $_POST['new_level'], '', $_POST['realname'], $_POST['can_modify_passwd']))
{ {
echo("<span class=info>User " . $_POST['username'] . " added!</span>"); echo("<span class=info>User " . $_POST['username'] . " added!</span>");
} }
@@ -45,14 +52,12 @@ else
echo("<span class=red>Please enter a password!</span><br />"); echo("<span class=red>Please enter a password!</span><br />");
} }
echo("Realname <input style='margin: 1px;' name='new_realname'></input><br />"); echo("Realname <input style='margin: 1px;' name='new_realname'></input><br />");
?>
<?php
echo("Level <select style='margin: 5px;' name='new_level'> echo("Level <select style='margin: 5px;' name='new_level'>
<option value='1'>Normal User</option> <option value='1'>Normal User</option>
<option value='5'>Global Read</option> <option value='5'>Global Read</option>
<option value='10'>Administrator</option> <option value='10'>Administrator</option>
</select><br /><br />"); </select><br />");
echo("<input type='checkbox' checked='checked' style='margin: 1px;' name='can_modify_passwd'></input> Allow the user to change his password.<br /><br />");
echo(" <input type='submit' Value='Add' >"); echo(" <input type='submit' Value='Add' >");
echo("</form>"); echo("</form>");
} }

View File

@@ -32,7 +32,7 @@ echo("</div>");
echo("<div style='width: 300px; float: right;'>"); echo("<div style='width: 300px; float: right;'>");
echo("<div style='background-color: #e5e5e5; border: solid #e5e5e5 10px; margin-bottom:10px;'>"); echo("<div style='background-color: #e5e5e5; border: solid #e5e5e5 10px; margin-bottom:10px;'>");
if (passwordscanchange()) if (passwordscanchange($_SESSION['username']))
{ {
echo("<div style='font-size: 18px; font-weight: bold; margin-bottom: 5px;'>Change Password</div>"); echo("<div style='font-size: 18px; font-weight: bold; margin-bottom: 5px;'>Change Password</div>");
echo($changepass_message); echo($changepass_message);