From 8b27498776f8970c5ba61b83993bf7d8b9ef22d7 Mon Sep 17 00:00:00 2001 From: Geoff Appleby Date: Sun, 15 May 2011 16:57:54 -0700 Subject: [PATCH] Allow extending series expiry each time a token is used --- persistent_login.install | 1 + persistent_login.module | 8 ++++++-- persistent_login.pages.inc | 7 +++++++ 3 files changed, 14 insertions(+), 2 deletions(-) mode change 100755 => 100644 persistent_login.install mode change 100755 => 100644 persistent_login.module diff --git a/persistent_login.install b/persistent_login.install old mode 100755 new mode 100644 index e243e15..dcc9c45 --- a/persistent_login.install +++ b/persistent_login.install @@ -70,6 +70,7 @@ function persistent_login_uninstall() { // Delete all module variables. variable_del('persistent_login_welcome'); variable_del('persistent_login_maxlife'); + variable_del('persistent_login_extend_expiry'); variable_del('persistent_login_maxlogins'); variable_del('persistent_login_secure'); variable_del('persistent_login_pages'); diff --git a/persistent_login.module b/persistent_login.module old mode 100755 new mode 100644 index c66db10..97c289b --- a/persistent_login.module +++ b/persistent_login.module @@ -413,9 +413,13 @@ function _persistent_login_create_cookie($acct, $edit = array()) { _persistent_login_invalidate('cleanup', "uid = %d AND series = '%s'", $uid, $series); } - $token = drupal_get_token(uniqid(mt_rand(), TRUE)); $days = variable_get('persistent_login_maxlife', PERSISTENT_LOGIN_MAXLIFE); - $expires = (isset($edit['pl_expires']) ? $edit['pl_expires'] : (($days > 0) ? time() + $days * 86400 : 0)); + $expires = isset($edit['pl_expires'])? $edit['pl_expires'] : 0; + if ($days > 0 && (!$expires || variable_get('persistent_login_extend_expiry', 0))) { + $expires = time() + $days * 86400; + } + + $token = drupal_get_token(uniqid(mt_rand(), TRUE)); $series = (isset($edit['pl_series']) ? $edit['pl_series'] : drupal_get_token(uniqid(mt_rand(), TRUE))); _persistent_login_setcookie($cookie_name, $acct->uid .':'. $series .':'. $token, $expires > 0 ? $expires : 2147483647); diff --git a/persistent_login.pages.inc b/persistent_login.pages.inc index a68c686..53766a3 100644 --- a/persistent_login.pages.inc +++ b/persistent_login.pages.inc @@ -32,6 +32,13 @@ function persistent_login_admin_settings() { '#description' => t('The maximum number of days for which a persistent login session is valid; afterwards, the user will need to log in again. Enter 0 for no expiration.'), ); + $form['persistent_login_extend_expiry'] = array( + '#type' => 'checkbox', + '#title' => t('Extend the expiry of persistent logins when used.'), + '#default_value' => variable_get('persistent_login_extend_expiry', 0), + '#description' => t('If set, when a user logs in with a persistent login cookie the series\' validity will be extended by the expiry period from the current time.'), + ); + $form['persistent_login_maxlogins'] = array( '#type' => 'select', '#title' => t('Remembered logins per user'),