diff --git a/admin/survey/classes/class.User.php b/admin/survey/classes/class.User.php index 049cce532..01582f8f9 100644 --- a/admin/survey/classes/class.User.php +++ b/admin/survey/classes/class.User.php @@ -96,18 +96,42 @@ class User { public static function findByEmail($email = null){ $user_id = sisplet_query("SELECT id FROM users WHERE email='".$email."'", "obj"); - if(!empty($user_id)){ - return $user_id->id; - } + if(!empty($user_id)){ + return $user_id->id; + } - // Preverimo, če uporablja alternativni email - $alternativni = sisplet_query("SELECT user_id FROM user_emails WHERE email='".$email."'", "obj"); - if(!empty($alternativni)){ - return $alternativni->user_id; - } + // Preverimo, če uporablja alternativni email + $alternativni = sisplet_query("SELECT user_id FROM user_emails WHERE email='".$email."'", "obj"); + if(!empty($alternativni)){ + return $alternativni->user_id; + } - return null; - } + return null; + } + + public static function findByEmail_AAI($email, $aai_id){ + + $user_id = sisplet_query("SELECT id FROM users WHERE email='".$email."'", "obj"); + if(!empty($user_id)){ + + // Ce se nimamo zabelezenega aai_id-ja (uuid), ga pri prvi novi prijavi zabelezimo + sisplet_query("UPDATE users SET aai_id='".$aai_id."' WHERE user_id='".$user_id->id."' AND email='".$email."' AND aai_id=''"); + + return $user_id->id; + } + + // Preverimo, če obstaja racun s tem aai id (uuid) + $user_id = sisplet_query("SELECT id FROM users WHERE aai_id='".$aai_id."'", "obj"); + if(!empty($user_id)){ + + // Ce obstaja pomeni da je bil aai email spremenjen - ga popravimo se v bazi + sisplet_query("UPDATE users SET email='".$email."' WHERE user_id='".$user_id->id."' AND aai_id='".$aai_id."'"); + + return $user_id->id; + } + + return null; + } public function insertAlternativeEmail($email = NULL, $active = 0) { @@ -147,7 +171,8 @@ class User { if(!empty($option)){ sisplet_query("UPDATE user_options SET option_value='".$value."' WHERE user_id='".$this->user->id."' AND id='".$option->id."'"); - }else{; + } + else{; sisplet_query("INSERT INTO user_options (user_id, option_name, option_value, created_at) VALUES ('".$this->user->id."', '".$name."', '".$value."', NOW())"); } } diff --git a/frontend/api/class.ApiLogin.php b/frontend/api/class.ApiLogin.php index db6630ac7..e9b1a4ddc 100644 --- a/frontend/api/class.ApiLogin.php +++ b/frontend/api/class.ApiLogin.php @@ -894,12 +894,15 @@ class ApiLogin $mails = explode(";", $data[0]); sort($mails); $mail = $mails[0]; + + // Pridobimo aai (shibboleth) "uuid" + $aai_id = $data[1]; - $ime = $data[1]; - $priimek = $data[2]; + $ime = $data[2]; + $priimek = $data[3]; - $njegova = $data[3]; - $moja = $data[4]; + $njegova = $data[4]; + $moja = $data[5]; // Preverimo ce ima veljaven token (najprej pobrisemo stare) @@ -911,14 +914,15 @@ class ApiLogin $pass = base64_encode((hash('SHA256', "e5zhbWRTEGW&u375ejsznrtztjhdtz%WZ&".$pass_salt))); // Preverimo ce obstaja user v bazi - $user_id_1ka = User::findByEmail($mail); + $user_id_1ka = User::findByEmail_AAI($mail, $aai_id); + if (empty($user_id_1ka)) { // Nastavimo pass $pass = base64_encode(hash('SHA256', "e5zhbWRTEGW&u375ejsznrtztjhdtz%WZ&".$pass_salt)); // dodaj ga v bazo - sisplet_query("INSERT INTO users (email, name, surname, type, pass, eduroam, when_reg) VALUES ('$mail', '$ime', '$priimek', '3', '".$pass."', '1', NOW())"); + sisplet_query("INSERT INTO users (email, aai_id, name, surname, type, pass, eduroam, when_reg) VALUES ('$mail', '$aai_id', '$ime', '$priimek', '3', '".$pass."', '1', NOW())"); // Pridobimo id dodanega userja $user_id = mysqli_insert_id($GLOBALS['connect_db']); @@ -926,10 +930,11 @@ class ApiLogin else { // potegni geslo in mu daj kuki - $result = sisplet_query("SELECT pass, id FROM users WHERE id='".$user_id_1ka."'"); + $result = sisplet_query("SELECT pass, email FROM users WHERE id='".$user_id_1ka."'"); $r = mysqli_fetch_row($result); $pass = $r[0]; + $mail = $r[1]; $user_id = $user_id_1ka; } diff --git a/sql/update2.sql b/sql/update2.sql index aaa2e6cb4..bea037a38 100644 --- a/sql/update2.sql +++ b/sql/update2.sql @@ -9534,3 +9534,8 @@ ALTER TABLE srv_language_vrednost CHANGE naslov2 naslov2 TEXT character set utf8 ALTER TABLE srv_language_spremenljivka CHANGE info info TEXT character set utf8 NOT NULL; UPDATE misc SET value='21.07.29' WHERE what="version"; + +## AAI ID uporabnika - SAMO NA AAI instalaciji!!! +##ALTER TABLE users ADD aai_id VARCHAR(255) CHARACTER SET utf8 NOT NULL DEFAULT '' AFTER email; + +UPDATE misc SET value='21.08.30' WHERE what="version";