require_once('include/security.php');
+require_once('include/datetime.php');
function nuke_session() {
unset($_SESSION['authenticated']);
goaway(z_root());
}
- authenticate_success($r[0]);
+ // Make sure to refresh the last login time for the user if the user
+ // stays logged in for a long time, e.g. with "Remember Me"
+ $login_refresh = false;
+ if(! x($_SESSION['last_login_date'])) {
+ $_SESSION['last_login_date'] = datetime_convert('UTC','UTC');
+ }
+ if( strcmp(datetime_convert('UTC','UTC','now - 12 hours'), $_SESSION['last_login_date']) > 0 ) {
+
+ $_SESSION['last_login_date'] = datetime_convert('UTC','UTC');
+ $login_refresh = true;
+ }
+ authenticate_success($r[0], false, false, $login_refresh);
}
}
else {
// if we haven't failed up this point, log them in.
+ $_SESSION['last_login_date'] = datetime_convert('UTC','UTC');
authenticate_success($record, true, true);
}
}
<?php
-function authenticate_success($user_record, $login_initial = false, $interactive = false) {
+function authenticate_success($user_record, $login_initial = false, $interactive = false, $login_refresh = false) {
$a = get_app();
if($login_initial)
logger('auth_identities: ' . print_r($a->identities,true), LOGGER_DEBUG);
+ if($login_refresh)
+ logger('auth_identities refresh: ' . print_r($a->identities,true), LOGGER_DEBUG);
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 1 LIMIT 1",
intval($_SESSION['uid']));
header('X-Account-Management-Status: active; name="' . $a->user['username'] . '"; id="' . $a->user['nickname'] .'"');
- if($login_initial) {
+ if($login_initial || $login_refresh) {
$l = get_browser_language();
q("UPDATE `user` SET `login_date` = '%s', `language` = '%s' WHERE `uid` = %d LIMIT 1",
dbesc($l),
intval($_SESSION['uid'])
);
-
+ }
+ if($login_initial) {
call_hooks('logged_in', $a->user);
if(($a->module !== 'home') && isset($_SESSION['return_url']))