From b2044e15b69b8240303055dc5071a2c6ed7bc904 Mon Sep 17 00:00:00 2001 From: Marcel Date: Sun, 30 Dec 2018 18:36:38 +0100 Subject: [PATCH] Fix remember me feature --- application/models/LoginModel.php | 70 +++++++++++++++++-------------- 1 file changed, 39 insertions(+), 31 deletions(-) diff --git a/application/models/LoginModel.php b/application/models/LoginModel.php index b61a827..ec66098 100644 --- a/application/models/LoginModel.php +++ b/application/models/LoginModel.php @@ -23,7 +23,7 @@ } $logindata = $logindata[0]; - if($logindata['isDeleted']) { + if ($logindata['isDeleted']) { $_SESSION['notice'] .= '
Der Account wurde deaktiviert! Dein Account wurde vom System deaktiviert, womöglich aufgrund von Fehlverhalten (beispielsweise in Form von anstößigen, unerwünschten, diskriminierenden oder volksverhetzenden Kommentaren, Posts oder Namen). Solltest du dies für ein Fehler halten, nutze bitte das Kontaktformular, um dich höflich zu beschweren.
'; return; } @@ -37,17 +37,6 @@ } } - public function logout() { - delete_cookie('rememberMe'); - delete_cookie('rememberToken'); - - $userID = $_SESSION['user']['ID']; - $this->db->query('UPDATE users SET isCurrentlyOnline = false, rememberToken = null WHERE ID = ?', [$userID]); - - unset($_SESSION['user']); - $_SESSION['loggedOut'] = true; - } - public function getLoginData($username) { $this->db->cache_off(); @@ -64,12 +53,6 @@ return $passwordHash; } - private function generateRandomUserHash($username) { - $base = uniqid(); - $seed = $username . date(time()); - return md5($base . $seed); - } - public function startLoginSession($logindata, $rememberMe) { $this->reloadLoginSession($logindata); @@ -91,19 +74,44 @@ public function reloadLoginSession($logindata) { - $_SESSION['user']['displayname'] = $logindata['displayname']; - $_SESSION['user']['username'] = $logindata['username']; - $_SESSION['user']['rank'] = $logindata['rank']; - $_SESSION['user']['ID'] = $logindata['ID']; - $_SESSION['user']['ads'] = $logindata['showAds']; - $profilePic = $logindata['profile_picture']; - if (empty($profilePic)) { - $_SESSION['user']['profilePic'] = '/assets/images/steam.jpg'; - } else { - $_SESSION['user']['profilePic'] = $profilePic; - } + list( + 'ID' => $id, + 'username' => $username, + 'displayname' => $displayname, + 'rank' => $rank, + 'showAds' => $ads, + 'profile_picture' => $avatar, + ) = $logindata; - $_SESSION['user']['permissions'] = $this->UserModel->getPermissions($logindata['ID']); + $this->session->set_userdata('user', [ + 'displayname' => $displayname, + 'username' => $username, + 'rank' => $rank, + 'ID' => $id, + 'ads' => $ads, + 'permissions' => $this->UserModel->getPermissions($id), + 'profilePic' => !empty($avatar) ? $avatar : '/assets/images/steam.jpg', + ]); + } + + private function generateRandomUserHash($username) + { + $base = uniqid(); + $seed = $username . date(time()); + return md5($base . $seed); + } + + public function logout() + { + echo 'wird aufgerufen?'; + delete_cookie('rememberMe'); + delete_cookie('rememberToken'); + + $userID = $_SESSION['user']['ID']; + $this->db->query('UPDATE users SET isCurrentlyOnline = false, rememberToken = null WHERE ID = ?', [$userID]); + + unset($_SESSION['user']); + $_SESSION['loggedOut'] = true; } public function isTrashMail($email) @@ -161,7 +169,7 @@ $result = $this->db->query('SELECT rememberToken FROM users WHERE ID = ?', [$logindata['ID']])->result_array(); $token = $result[0]['rememberToken']; - if ($token !== null && sizeof($token) == 32 && $_COOKIE['rememberToken'] == $token) { + if ($token !== null && strlen($token) == 32 && $_COOKIE['rememberToken'] == $token) { $this->startLoginSession($logindata, 'on'); } }