fix problems if password reset is continued in different browser
This commit is contained in:
parent
2a1a4e57a6
commit
2940462f96
|
@ -40,10 +40,11 @@ checkClientIP();
|
|||
* Starts a session and checks the environment.
|
||||
* The script is stopped if one of the checks fail (timeout redirection may be overriden).
|
||||
*
|
||||
* @param boolean $redirectToLogin redirect user to login page
|
||||
* @param boolean $redirectToLogin redirect user to login page (default: true)
|
||||
* @param boolean $initSecureData init verification data like session ID and client IP (default: false)
|
||||
* @return boolean true if all ok, false if session expired
|
||||
*/
|
||||
function startSecureSession($redirectToLogin = true) {
|
||||
function startSecureSession($redirectToLogin = true, $initSecureData = false) {
|
||||
// start session
|
||||
if (isset($_SESSION)) unset($_SESSION);
|
||||
if (strtolower(session_module_name()) == 'files') {
|
||||
|
@ -55,6 +56,13 @@ function startSecureSession($redirectToLogin = true) {
|
|||
}
|
||||
}
|
||||
@session_start();
|
||||
// init secure data if needed
|
||||
if ($initSecureData && !isset($_SESSION["sec_session_id"])) {
|
||||
$_SESSION["sec_session_id"] = session_id();
|
||||
$_SESSION["sec_client_ip"] = $_SERVER['REMOTE_ADDR'];
|
||||
$_SESSION['sec_sessionTime'] = time();
|
||||
$_SESSION['cfgMain'] = new LAMCfgMain();
|
||||
}
|
||||
// check session id
|
||||
if (! isset($_SESSION["sec_session_id"]) || ($_SESSION["sec_session_id"] != session_id())) {
|
||||
// session id is invalid
|
||||
|
@ -126,7 +134,7 @@ function logoffAndBackToLoginPage() {
|
|||
// close LDAP connection
|
||||
@$_SESSION["ldap"]->destroy();
|
||||
}
|
||||
elseif (isset($_SESSION['selfService_clientDN'])) {
|
||||
elseif (isset($_SESSION['selfService_clientDN']) || (strpos($_SERVER['REQUEST_URI'], '/selfService/') !== false)) {
|
||||
logNewMessage(LOG_WARNING, 'Self service session of DN ' . Ldap::decrypt($_SESSION['selfService_clientDN'], 'SelfService') . ' expired.');
|
||||
}
|
||||
// delete key and iv in cookie
|
||||
|
@ -138,7 +146,7 @@ function logoffAndBackToLoginPage() {
|
|||
$paths = array('./', '../', '../../', '../../../', '../../../../');
|
||||
$page = 'login.php';
|
||||
$pageSuffix = '?expired=yes';
|
||||
if (isset($_SESSION['selfService_clientDN'])) {
|
||||
if (isset($_SESSION['selfService_clientDN']) || (strpos($_SERVER['REQUEST_URI'], '/selfService/') !== false)) {
|
||||
$scope = $_GET['scope'];
|
||||
$name = $_GET['name'];
|
||||
if (!preg_match('/^[0-9a-zA-Z _-]+$/', $scope) || !preg_match('/^[0-9a-zA-Z _-]+$/', $name)) {
|
||||
|
|
Loading…
Reference in New Issue