Archived
1
0

Changes of the last few months including restructuring system from using only ranks to permissions

This commit is contained in:
Marcel
2018-12-26 18:19:28 +01:00
parent 72f3434803
commit 1a1ac17ecf
38 changed files with 845 additions and 361 deletions

View File

@@ -8,6 +8,7 @@
{
parent::__construct();
$this->load->model('NotificationModel', '', TRUE);
$this->load->model('UserModel', '', TRUE);
$this->load->model('EmailModel', '', TRUE);
$this->load->helper('cookie');
}
@@ -22,19 +23,26 @@
}
$logindata = $logindata[0];
if($logindata['isDeleted']) {
$_SESSION['notice'] .= '<div class="alert alert-danger alert-dismissible"><button type="button" class="close" data-dismiss="alert" aria-label="Schließen"><span aria-hidden="true">&times;</span></button><strong>Der Account wurde deaktiviert!</strong> 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 <b>höflich</b> zu beschweren.</div>';
return;
}
$encryptedPassword = $this->getPasswordHash($password, $logindata['original_name']);
if ($encryptedPassword == $logindata['password']) {
$this->startLoginSession($logindata, $rememberMe);
} else {
$_SESSION['notice'] .= '<div class="alert alert-danger alert-dismissible"><button type="button" class="close" data-dismiss="alert" aria-label="Schließen"><span aria-hidden="true">&times;</span></button><strong>Falsche Anmeldedaten!</strong> Benutzername und Passwort stimmen nicht überein!</div>';
$_SESSION['notice'] .= '<div class="alert alert-danger alert-dismissible"><button type="button" class="close" data-dismiss="alert" aria-label="Schließen"><span aria-hidden="true">&times;</span></button><strong>Falsche Anmeldedaten!</strong> Benutzername oder Passwort stimmen nicht mit unseren Akten überein.</div>';
}
}
public function getLoginData($username)
{
$this->db->cache_off();
$return = $this->db->query('SELECT * FROM users WHERE (username = lower(?) OR email = lower(?)) AND is_activated = TRUE LIMIT 1',
[htmlspecialchars($username, ENT_QUOTES), $username])->result_array();
$this->db->cache_on();
return $return;
}
@@ -47,26 +55,26 @@
public function startLoginSession($logindata, $rememberMe)
{
$_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;
}
$this->reloadLoginSession($logindata);
$this->db->query('UPDATE users SET isCurrentlyOnline = 1, lastLogin = CURRENT_TIMESTAMP() WHERE ID = ?', [$logindata['ID']]);
if ($rememberMe == 'on') {
$expire = time() + 3600 * 24 * 60;
$expire = 3600 * 24 * 60;
$userHash = $this->LoginModel->getUserHash($logindata['username'], $logindata['password'], $logindata['email'], $logindata['ID']);
var_dump($expire);
set_cookie('rememberMe', base64_encode($logindata['username']), $expire, base_url(), '/');
set_cookie('token', $userHash, $expire, base_url(), '/');
// $this->input->set_cookie('rememberMe', base64_encode($logindata['username']), $expire, base_url(), '/');
// $this->input->set_cookie('token', $userHash, $expire, base_url(), '/');
var_dump(get_cookie('rememberMe'));
echo 'fresh';
var_dump($_COOKIE);
$_COOKIE['rememberMe'] = base64_encode($logindata['username']);
$_COOKIE['token'] = $userHash;
echo 'tech';
// var_dump(get_cookie('rememberMe'));
// var_dump(get_cookie('token'));
var_dump($_COOKIE);
}
}
@@ -83,6 +91,8 @@
} else {
$_SESSION['user']['profilePic'] = $profilePic;
}
$_SESSION['user']['permissions'] = $this->UserModel->getPermissions($logindata['ID']);
}
public function isTrashMail($email)
@@ -133,13 +143,16 @@
if (isset($_SESSION['loggedOut']) && $_SESSION['loggedOut']) {
return;
}
var_dump('test');
if (!isset($_SESSION['user']) && isset($_COOKIE['rememberMe']) && isset($_COOKIE['token'])) {
var_dump($_COOKIE);
$logindata = $this->getLoginData(base64_decode($_COOKIE['rememberMe']));
if (!empty($logindata)) {
$logindata = $logindata[0];
$token = $this->getUserHash($logindata['username'], $logindata['password'], $logindata['email'], $logindata['ID']);
if ($_COOKIE['token'] == $token) {
echo '<br> TEST! <br>';
$this->startLoginSession($logindata, 'on');
}
}