Moved case-insensitive username checks to SQL
parent
143a00cccc
commit
8fc60fef12
|
@ -58,14 +58,13 @@ function migrateHash($user, $pass) {
|
||||||
|
|
||||||
// core function used to load a User record by username and password
|
// core function used to load a User record by username and password
|
||||||
function validateUser($username='', $password='') {
|
function validateUser($username='', $password='') {
|
||||||
$sql = 'SELECT * FROM Users WHERE Enabled=1 AND Username=?';
|
|
||||||
// local user, shouldn't affect the global user
|
|
||||||
$user = null; // Not global
|
|
||||||
if (ZM_CASE_INSENSITIVE_USERNAMES) {
|
if (ZM_CASE_INSENSITIVE_USERNAMES) {
|
||||||
$user = dbFetchOne($sql, NULL, array(strtolower($username)));
|
$sql = 'SELECT * FROM Users WHERE Enabled=1 AND LOWER(Username)=LOWER(?)';
|
||||||
} else {
|
} else {
|
||||||
$user = dbFetchOne($sql, NULL, array($username));
|
$sql = 'SELECT * FROM Users WHERE Enabled=1 AND Username=?';
|
||||||
}
|
}
|
||||||
|
// local user, shouldn't affect the global user
|
||||||
|
$user = dbFetchOne($sql, NULL, array($username)); // Not global
|
||||||
if (!$user) {
|
if (!$user) {
|
||||||
return array(false, "Could not retrieve user $username details");
|
return array(false, "Could not retrieve user $username details");
|
||||||
}
|
}
|
||||||
|
@ -137,7 +136,11 @@ function validateToken($token, $allowed_token_type='access') {
|
||||||
}
|
}
|
||||||
|
|
||||||
$username = $jwt_payload['user'];
|
$username = $jwt_payload['user'];
|
||||||
$sql = 'SELECT * FROM Users WHERE Enabled=1 AND Username=?';
|
if (ZM_CASE_INSENSITIVE_USERNAMES) {
|
||||||
|
$sql = 'SELECT * FROM Users WHERE Enabled=1 AND LOWER(Username)=LOWER(?)';
|
||||||
|
} else {
|
||||||
|
$sql = 'SELECT * FROM Users WHERE Enabled=1 AND Username=?';
|
||||||
|
}
|
||||||
$saved_user_details = dbFetchOne($sql, NULL, array($username));
|
$saved_user_details = dbFetchOne($sql, NULL, array($username));
|
||||||
|
|
||||||
if ($saved_user_details) {
|
if ($saved_user_details) {
|
||||||
|
@ -192,7 +195,11 @@ function getAuthUser($auth) {
|
||||||
|
|
||||||
if (isset($_SESSION['username'])) {
|
if (isset($_SESSION['username'])) {
|
||||||
# In a multi-server case, we might be logged in as another user and so the auth hash didn't work
|
# In a multi-server case, we might be logged in as another user and so the auth hash didn't work
|
||||||
$sql = 'SELECT * FROM Users WHERE Enabled = 1 AND Username != ?';
|
if (ZM_CASE_INSENSITIVE_USERNAMES) {
|
||||||
|
$sql = 'SELECT * FROM Users WHERE Enabled = 1 AND LOWER(Username) != LOWER(?)';
|
||||||
|
} else {
|
||||||
|
$sql = 'SELECT * FROM Users WHERE Enabled = 1 AND Username != ?';
|
||||||
|
}
|
||||||
|
|
||||||
foreach (dbFetchAll($sql, NULL, $values) as $user) {
|
foreach (dbFetchAll($sql, NULL, $values) as $user) {
|
||||||
$now = time();
|
$now = time();
|
||||||
|
@ -272,12 +279,12 @@ function userFromSession() {
|
||||||
ZM\Debug('No auth hash in session, there should have been');
|
ZM\Debug('No auth hash in session, there should have been');
|
||||||
} else {
|
} else {
|
||||||
# Need to refresh permissions and validate that the user still exists
|
# Need to refresh permissions and validate that the user still exists
|
||||||
$sql = 'SELECT * FROM Users WHERE Enabled=1 AND Username=?';
|
|
||||||
if (ZM_CASE_INSENSITIVE_USERNAMES) {
|
if (ZM_CASE_INSENSITIVE_USERNAMES) {
|
||||||
$user = dbFetchOne($sql, NULL, array(strtolower($_SESSION['username'])));
|
$sql = 'SELECT * FROM Users WHERE Enabled=1 AND LOWER(Username)=LOWER(?)';
|
||||||
} else {
|
} else {
|
||||||
$user = dbFetchOne($sql, NULL, array($_SESSION['username']));
|
$sql = 'SELECT * FROM Users WHERE Enabled=1 AND Username=?';
|
||||||
}
|
}
|
||||||
|
$user = dbFetchOne($sql, NULL, array($_SESSION['username']));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $user;
|
return $user;
|
||||||
|
@ -325,13 +332,13 @@ if (ZM_OPT_USE_AUTH) {
|
||||||
}
|
}
|
||||||
$user = $ret[0];
|
$user = $ret[0];
|
||||||
} else if ((ZM_AUTH_TYPE == 'remote') and !empty($_SERVER['REMOTE_USER'])) {
|
} else if ((ZM_AUTH_TYPE == 'remote') and !empty($_SERVER['REMOTE_USER'])) {
|
||||||
$sql = 'SELECT * FROM Users WHERE Enabled=1 AND Username=?';
|
|
||||||
// local user, shouldn't affect the global user
|
|
||||||
if (ZM_CASE_INSENSITIVE_USERNAMES) {
|
if (ZM_CASE_INSENSITIVE_USERNAMES) {
|
||||||
$user = dbFetchOne($sql, NULL, array(strtolower($_SERVER['REMOTE_USER'])));
|
$sql = 'SELECT * FROM Users WHERE Enabled=1 AND LOWER(Username)=LOWER(?)';
|
||||||
} else {
|
} else {
|
||||||
$user = dbFetchOne($sql, NULL, array($_SERVER['REMOTE_USER']));
|
$sql = 'SELECT * FROM Users WHERE Enabled=1 AND Username=?';
|
||||||
}
|
}
|
||||||
|
// local user, shouldn't affect the global user
|
||||||
|
$user = dbFetchOne($sql, NULL, array($_SERVER['REMOTE_USER']));
|
||||||
} else {
|
} else {
|
||||||
$user = userFromSession();
|
$user = userFromSession();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue