فهرست منبع

Login bugfix for multi/uppercase?

Cerothen 9 سال پیش
والد
کامیت
1b91dec8bb
1فایلهای تغییر یافته به همراه17 افزوده شده و 18 حذف شده
  1. 17 18
      user.php

+ 17 - 18
user.php

@@ -502,8 +502,7 @@ EOT;
 		 * is profile information that can be set, but in no way
 		 * needs to be, in the user's profile section
 		 */
-		function register_user($username, $email, $sha1, &$registration_callback = false, $settings)
-		{
+		function register_user($username, $email, $sha1, &$registration_callback = false, $settings) {
 			$username = strtolower($username);
 			$dbpassword = $this->token_hash_password($username, $sha1, "");
 			if($dbpassword==$sha1) die("password hashing is not implemented.");
@@ -514,7 +513,7 @@ EOT;
             }
 			// Does user already exist? (see notes on safe reporting)
 			if(User::unsafe_reporting) {
-				$query = "SELECT username FROM users WHERE username LIKE '$username'";
+				$query = "SELECT username FROM users WHERE username LIKE '$username' COLLATE NOCASE";
 				foreach($this->database->query($query) as $data) {
 					$this->info("user account for $username not created.");
 					$this->error = "this user name is already being used by someone else.";
@@ -532,7 +531,7 @@ EOT;
 			}
 			// Is email address already in use? (see notes on safe reporting)
 			if (isset($email) && $email) {
-				$query = "SELECT * FROM users WHERE email = '$email'";
+				$query = "SELECT * FROM users WHERE email = '$email' COLLATE NOCASE";
 				foreach($this->database->query($query) as $data) {
 					$this->info("user account for $username not created.");
 					$this->error = "this email address is already in use by someone else.";
@@ -602,7 +601,7 @@ EOT;
 				default: // Internal
 					if (!$authSuccess) {
 						// perform the internal authentication step
-						$query = "SELECT password FROM users WHERE LOWER(username) = '".strtolower($username)."'";
+						$query = "SELECT password FROM users WHERE username = '".$username."' COLLATE NOCASE";
 						foreach($this->database->query($query) as $data) {
 							if (password_verify($password, $data["password"])) { // Better
 								$authSuccess = true;
@@ -619,7 +618,7 @@ EOT;
 			
 			if ($authSuccess) {
 				// Make sure user exists in database
-				$query = "SELECT username FROM users WHERE LOWER(username) = '".strtolower($username)."'";
+				$query = "SELECT username FROM users WHERE username = '".$username."' COLLATE NOCASE";
 				$userExists = false;
 				foreach($this->database->query($query) as $data) {
 					$userExists = true;
@@ -678,10 +677,10 @@ EOT;
 		function update_user($username, $email, $sha1, $role)
 		{
 			if($email !="") {
-				$update = "UPDATE users SET email = '$email' WHERE username = '$username'";
+				$update = "UPDATE users SET email = '$email' WHERE username = '$username' COLLATE NOCASE";
 				$this->database->exec($update); }
             if($role !="") {
-				$update = "UPDATE users SET role = '$role' WHERE username = '$username'";
+				$update = "UPDATE users SET role = '$role' WHERE username = '$username' COLLATE NOCASE";
 				$this->database->exec($update); }
 			if($sha1 !="") {
 				$dbpassword = $this->token_hash_password($username, $sha1, $this->get_user_token($username));
@@ -694,7 +693,7 @@ EOT;
 		 */
 		function logout_user($username)
 		{
-			$update = "UPDATE users SET active = 'false' WHERE username = '$username'";
+			$update = "UPDATE users SET active = 'false' WHERE username = '$username' COLLATE NOCASE";
 			$this->database->exec($update);
 			$this->resetSession();
 			$this->info("Buh-Bye <strong>$username</strong>!");
@@ -714,7 +713,7 @@ EOT;
 		 */
 		function unregister_user($username)
 		{
-			$delete = "DELETE FROM users WHERE username = '$username'";
+			$delete = "DELETE FROM users WHERE username = '$username' COLLATE NOCASE";
 			$this->database->exec($delete);
 			$this->info("<strong>$username</strong> has been kicked out of Organizr");
 			//$this->resetSession();
@@ -737,7 +736,7 @@ EOT;
 		function get_user_email($username)
 		{
 			if($username && $username !="" && $username !=User::GUEST_USER) {
-				$query = "SELECT email FROM users WHERE username = '$username'";
+				$query = "SELECT email FROM users WHERE username = '$username' COLLATE NOCASE";
 				foreach($this->database->query($query) as $data) { return $data["email"]; }}
 			return "";
 		}
@@ -747,7 +746,7 @@ EOT;
 		function get_user_role($username)
 		{
 			if($username && $username !="" && $username !=User::GUEST_USER) {
-				$query = "SELECT role FROM users WHERE username = '$username'";
+				$query = "SELECT role FROM users WHERE username = '$username' COLLATE NOCASE";
 				foreach($this->database->query($query) as $data) { return $data["role"]; }}
 			return User::GUEST_USER;
 		}
@@ -755,7 +754,7 @@ EOT;
        /* function get_user_group($username)
 		{
 			if($username && $username !="" && $username !=User::GUEST_USER) {
-				$query = "SELECT group FROM users WHERE username = '$username'";
+				$query = "SELECT group FROM users WHERE username = '$username' COLLATE NOCASE";
 				foreach($this->database->query($query) as $data) { return $data["group"]; }}
 			return User::GUEST_USER;
 		}*/
@@ -764,7 +763,7 @@ EOT;
 		 */
 		function get_user_token($username)
 		{
-			$query = "SELECT token FROM users WHERE username = '$username'";
+			$query = "SELECT token FROM users WHERE username = '$username' COLLATE NOCASE";
 			foreach($this->database->query($query) as $data) { return $data["token"]; }
 			return false;
 		}
@@ -775,11 +774,11 @@ EOT;
 		{
 			// update the user's token
 			$token = $this->random_hex_string(32);
-			$update = "UPDATE users SET token = '$token' WHERE username = '$username'";
+			$update = "UPDATE users SET token = '$token' WHERE username = '$username' COLLATE NOCASE";
 			$this->database->exec($update);
 			// update the user's password
 			$newpassword = $this->token_hash_password($username, $sha1, $token);
-			$update = "UPDATE users SET password = '$newpassword' WHERE username = '$username'";
+			$update = "UPDATE users SET password = '$newpassword' WHERE username = '$username' COLLATE NOCASE";
 			$this->database->exec($update);
 			if($noMsg == "false"){
                 $this->info("token and password updated for <strong>$username</strong>");   
@@ -791,7 +790,7 @@ EOT;
 		 */
 		function mark_user_active($username)
 		{
-			$update = "UPDATE users SET active = 'true', last = '" . time() . "' WHERE username = '$username'";
+			$update = "UPDATE users SET active = 'true', last = '" . time() . "' WHERE username = '$username' COLLATE NOCASE";
 			$this->database->exec($update);
 			//$this->info("$username has been marked currently active.");
 			return true;
@@ -803,7 +802,7 @@ EOT;
 		{
 			$last = 0;
 			$active = "false";
-			$query = "SELECT last, active FROM users WHERE username = '$username'";
+			$query = "SELECT last, active FROM users WHERE username = '$username' COLLATE NOCASE";
 			foreach($this->database->query($query) as $data) {
 				$last = intval($data["last"]);
 				$active = $data["active"];