Răsfoiți Sursa

Added option to login from email or username
Fixed #732

causefx 8 ani în urmă
părinte
comite
8ca7a67a55
2 a modificat fișierele cu 9 adăugiri și 6 ștergeri
  1. 4 2
      functions.php
  2. 5 4
      user.php

+ 4 - 2
functions.php

@@ -285,7 +285,7 @@ if (function_exists('curl_version')) :
 			$isUser = false;
 			$usernameLower = strtolower($username);
 			foreach($userXML AS $child) {
-				if(isset($child['username']) && strtolower($child['username']) == $usernameLower) {
+				if(isset($child['username']) && strtolower($child['username']) == $usernameLower || isset($child['email']) && strtolower($child['email']) == $usernameLower) {
 					$isUser = true;
      				writeLog("success", $usernameLower." was found in plex friends list");
 					break;
@@ -309,7 +309,7 @@ if (function_exists('curl_version')) :
 				$result = curl_post($connectURL, $body, $headers);
 				if (isset($result['content'])) {
 					$json = json_decode($result['content'], true);
-					if (is_array($json) && isset($json['user']) && isset($json['user']['username']) && strtolower($json['user']['username']) == $usernameLower) {
+					if ((is_array($json) && isset($json['user']) && isset($json['user']['username'])) && strtolower($json['user']['username']) == $usernameLower || strtolower($json['user']['email']) == $usernameLower) {
 						writeLog("success", $json['user']['username']." was logged into organizr using plex credentials");
                         return array(
 							'email' => $json['user']['email'],
@@ -318,6 +318,8 @@ if (function_exists('curl_version')) :
 							'type' => $isAdmin ? 'admin' : 'user',
 						);
 					}
+				}else{
+					writeLog("error", "error occured while trying to sign $username into plex");
 				}
 			}else{
 				writeLog("error", "$username is not an authorized PLEX user or entered invalid password");

+ 5 - 4
user.php

@@ -538,7 +538,7 @@
 		 * 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, $validate, $roleOverride = 'user') {
+		function register_user($username, $email, $sha1, &$registration_callback = false, $settings, $validate, $roleOverride = 'user', $password = null) {
 			//Admin bypass
 			if($validate == null){
 				$override = false;
@@ -622,7 +622,7 @@
 				//$this->info("created user directory $dir");
 				// if there is a callback, call it
 				if($registration_callback !== false) { $registration_callback($username, $email, $dir); }
-                if($settings !== 'true' && $settings !== true) { $this->login_user($username, $sha1, true, '', false); }
+                if($settings !== 'true' && $settings !== true) { $this->login_user($username, $sha1, true, $password, false); }
 				//send email
 				if($username && User::use_mail)
 				{
@@ -701,10 +701,11 @@
 
 			if ($authSuccess) {
 				// Make sure user exists in database
-				$query = "SELECT role FROM users WHERE username = '".$username."' COLLATE NOCASE";
+				$query = "SELECT username FROM users WHERE username = '".$username."' OR email = '".$username."' COLLATE NOCASE";
 				$userExists = false;
 				foreach($this->database->query($query) as $data) {
 					$userExists = true;
+					$username = $data['username'];
 					break;
 				}
 
@@ -756,7 +757,7 @@
 					// Create User
 					$falseByRef = false;
 					if(isset($authSuccess['type'])){ $roleOverride = $authSuccess['type']; }else{ $roleOverride = 'user'; }
-					$this->register_user($username, (is_array($authSuccess) && isset($authSuccess['email']) ? $authSuccess['email'] : ''), $sha1, $falseByRef, !$remember, true, $roleOverride);
+					$this->register_user($username, (is_array($authSuccess) && isset($authSuccess['email']) ? $authSuccess['email'] : ''), $sha1, $falseByRef, !$remember, true, $roleOverride, $password);
 				} else {
 					// authentication failed
 					//$this->info("Successful Backend Auth, No User in DB, Create Set to False");