46f520e1fe
Lychee will automatically create medium-sized photos when the photo ist big enough and Imagick installed and activated. It's no longer possible to deactivate it.
133 lines
3.0 KiB
PHP
Executable File
133 lines
3.0 KiB
PHP
Executable File
<?php
|
|
|
|
namespace Lychee\Modules;
|
|
|
|
final class Session {
|
|
|
|
/**
|
|
* Reads and returns information about the Lychee installation.
|
|
* @return array Returns an array with the login status and configuration.
|
|
*/
|
|
public function init($public = true) {
|
|
|
|
// Call plugins
|
|
Plugins::get()->activate(__METHOD__, 0, func_get_args());
|
|
|
|
// Return settings
|
|
$return['config'] = Settings::get();
|
|
|
|
// Path to Lychee for the server-import dialog
|
|
$return['config']['location'] = LYCHEE;
|
|
|
|
// Remove sensitive from response
|
|
unset($return['config']['username']);
|
|
unset($return['config']['password']);
|
|
unset($return['config']['identifier']);
|
|
|
|
// Check if login credentials exist and login if they don't
|
|
if ($this->noLogin()===true) {
|
|
$public = false;
|
|
$return['config']['login'] = false;
|
|
} else {
|
|
$return['config']['login'] = true;
|
|
}
|
|
|
|
if ($public===false) {
|
|
|
|
// Logged in
|
|
$return['status'] = LYCHEE_STATUS_LOGGEDIN;
|
|
|
|
} else {
|
|
|
|
// Logged out
|
|
$return['status'] = LYCHEE_STATUS_LOGGEDOUT;
|
|
|
|
// Unset unused vars
|
|
unset($return['config']['skipDuplicates']);
|
|
unset($return['config']['sortingAlbums']);
|
|
unset($return['config']['sortingPhotos']);
|
|
unset($return['config']['dropboxKey']);
|
|
unset($return['config']['login']);
|
|
unset($return['config']['location']);
|
|
unset($return['config']['imagick']);
|
|
unset($return['config']['plugins']);
|
|
|
|
}
|
|
|
|
// Call plugins
|
|
Plugins::get()->activate(__METHOD__, 1, func_get_args());
|
|
|
|
return $return;
|
|
|
|
}
|
|
|
|
/**
|
|
* Sets the session values when username and password correct.
|
|
* @return boolean Returns true when login was successful.
|
|
*/
|
|
public function login($username, $password) {
|
|
|
|
// Call plugins
|
|
Plugins::get()->activate(__METHOD__, 0, func_get_args());
|
|
|
|
$username = crypt($username, Settings::get()['username']);
|
|
$password = crypt($password, Settings::get()['password']);
|
|
|
|
// Check login with crypted hash
|
|
if (Settings::get()['username']===$username&&
|
|
Settings::get()['password']===$password) {
|
|
$_SESSION['login'] = true;
|
|
$_SESSION['identifier'] = Settings::get()['identifier'];
|
|
return true;
|
|
}
|
|
|
|
// No login
|
|
if ($this->noLogin()===true) return true;
|
|
|
|
// Call plugins
|
|
Plugins::get()->activate(__METHOD__, 1, func_get_args());
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
/**
|
|
* Sets the session values when no there is no username and password in the database.
|
|
* @return boolean Returns true when no login was found.
|
|
*/
|
|
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;
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
/**
|
|
* Unsets the session values.
|
|
* @return boolean Returns true when logout was successful.
|
|
*/
|
|
public function logout() {
|
|
|
|
// Call plugins
|
|
Plugins::get()->activate(__METHOD__, 0, func_get_args());
|
|
|
|
session_unset();
|
|
session_destroy();
|
|
|
|
// Call plugins
|
|
Plugins::get()->activate(__METHOD__, 1, func_get_args());
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
?>
|