lychee/php/Modules/Session.php

137 lines
3.3 KiB
PHP
Raw Permalink Normal View History

2014-04-04 19:10:32 +00:00
<?php
namespace Lychee\Modules;
2014-04-04 19:10:32 +00:00
final class Session {
2014-04-04 19:10:32 +00:00
2016-02-13 16:32:44 +00:00
/**
* Reads and returns information about the Lychee installation.
* @return array Returns an array with the login status and configuration.
*/
2016-01-30 19:18:10 +00:00
public function init($public = true) {
2014-04-04 19:10:32 +00:00
// Call plugins
Plugins::get()->activate(__METHOD__, 0, func_get_args());
2014-04-04 19:12:49 +00:00
// Return settings
$return['config'] = Settings::get();
2015-04-17 20:50:35 +00:00
// Path to Lychee for the server-import dialog
2016-01-19 10:03:28 +00:00
$return['config']['location'] = LYCHEE;
2016-02-13 16:32:44 +00:00
// Remove sensitive from response
2015-04-17 20:50:35 +00:00
unset($return['config']['username']);
2014-04-04 19:10:32 +00:00
unset($return['config']['password']);
unset($return['config']['identifier']);
// Check if login credentials exist and login if they don't
2015-01-23 20:00:27 +00:00
if ($this->noLogin()===true) {
$public = false;
$return['config']['login'] = false;
} else {
$return['config']['login'] = true;
}
2014-04-04 19:10:32 +00:00
if ($public===false) {
// Logged in
2015-03-06 22:29:55 +00:00
$return['status'] = LYCHEE_STATUS_LOGGEDIN;
2014-04-04 19:10:32 +00:00
} else {
// Logged out
2015-03-06 22:29:55 +00:00
$return['status'] = LYCHEE_STATUS_LOGGEDOUT;
// Unset unused vars
unset($return['config']['skipDuplicates']);
2015-05-14 15:20:33 +00:00
unset($return['config']['sortingAlbums']);
unset($return['config']['sortingPhotos']);
2014-04-04 19:10:32 +00:00
unset($return['config']['dropboxKey']);
unset($return['config']['login']);
unset($return['config']['location']);
2015-05-14 15:20:33 +00:00
unset($return['config']['imagick']);
unset($return['config']['plugins']);
2014-04-04 19:10:32 +00:00
}
// Call plugins
Plugins::get()->activate(__METHOD__, 1, func_get_args());
2014-04-04 19:12:49 +00:00
2014-04-04 19:10:32 +00:00
return $return;
}
2016-02-13 16:32:44 +00:00
/**
* Sets the session values when username and password correct.
* @return boolean Returns true when login was successful.
*/
2014-04-04 19:10:32 +00:00
public function login($username, $password) {
// Call plugins
Plugins::get()->activate(__METHOD__, 0, func_get_args());
2014-04-04 19:12:49 +00:00
2016-03-16 19:20:21 +00:00
$username_crypt = crypt($username, Settings::get()['username']);
2016-03-19 15:16:41 +00:00
$password_crypt = crypt($password, Settings::get()['password']);
2014-04-04 19:10:32 +00:00
// Check login with crypted hash
2016-03-16 19:20:21 +00:00
if (Settings::get()['username']===$username_crypt&&
2016-03-19 15:16:41 +00:00
Settings::get()['password']===$password_crypt) {
$_SESSION['login'] = true;
$_SESSION['identifier'] = Settings::get()['identifier'];
2016-03-19 15:16:41 +00:00
Log::notice(Database::get(), __METHOD__, __LINE__, 'User (' . $username . ') has logged in from ' . $_SERVER['REMOTE_ADDR']);
return true;
}
// No login
if ($this->noLogin()===true) return true;
2014-04-04 19:10:32 +00:00
// Call plugins
Plugins::get()->activate(__METHOD__, 1, func_get_args());
2014-04-04 19:12:49 +00:00
2016-03-19 15:16:41 +00:00
// Log failed log in
Log::error(Database::get(), __METHOD__, __LINE__, 'User (' . $username . ') has tried to log in from ' . $_SERVER['REMOTE_ADDR']);
2014-04-04 19:10:32 +00:00
return false;
}
2016-02-13 16:32:44 +00:00
/**
* Sets the session values when no there is no username and password in the database.
* @return boolean Returns true when no login was found.
*/
2015-01-23 20:00:27 +00:00
private function noLogin() {
// Check if login credentials exist and login if they don't
if (Settings::get()['username']===''&&
Settings::get()['password']==='') {
$_SESSION['login'] = true;
$_SESSION['identifier'] = Settings::get()['identifier'];
return true;
2015-01-23 20:00:27 +00:00
}
return false;
}
2016-02-13 16:32:44 +00:00
/**
* Unsets the session values.
* @return boolean Returns true when logout was successful.
*/
2014-04-04 19:10:32 +00:00
public function logout() {
// Call plugins
Plugins::get()->activate(__METHOD__, 0, func_get_args());
2014-04-04 19:12:49 +00:00
2016-02-13 16:32:44 +00:00
session_unset();
2014-04-04 19:10:32 +00:00
session_destroy();
2014-04-04 19:12:49 +00:00
// Call plugins
Plugins::get()->activate(__METHOD__, 1, func_get_args());
2014-04-04 19:12:49 +00:00
2014-04-04 19:10:32 +00:00
return true;
}
}
?>