| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 | <?phpnamespace 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 = crypt($username, Settings::get()['username']);		$password_crypt = crypt($password, Settings::get()['password']);		// Check login with crypted hash		if (Settings::get()['username']===$username_crypt&&			Settings::get()['password']===$password_crypt) {				$_SESSION['login']      = true;				$_SESSION['identifier'] = Settings::get()['identifier'];				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;		// Call plugins		Plugins::get()->activate(__METHOD__, 1, func_get_args());		// Log failed log in		Log::error(Database::get(), __METHOD__, __LINE__, 'User (' . $username . ') has tried to log in from ' . $_SERVER['REMOTE_ADDR']);		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;	}}?>
 |