Fixes password input being prompted every time.

Fixes #7106

- Echoing the current server time via a JS variable and storing the current time on page load in JS.
- Calculating the diff and taking it into account when deciding whether to show the password confirmation.

Signed-off-by: Abijeet <abijeetpatro@gmail.com>
This commit is contained in:
Abijeet 2017-12-28 01:41:16 +05:30
parent f25e51c369
commit de5467811a
2 changed files with 6 additions and 2 deletions

View File

@ -1675,13 +1675,16 @@ function initCore() {
OC.PasswordConfirmation = { OC.PasswordConfirmation = {
callback: null, callback: null,
pageLoadTime: null,
init: function() { init: function() {
$('.password-confirm-required').on('click', _.bind(this.requirePasswordConfirmation, this)); $('.password-confirm-required').on('click', _.bind(this.requirePasswordConfirmation, this));
this.pageLoadTime = moment.now();
}, },
requiresPasswordConfirmation: function() { requiresPasswordConfirmation: function() {
var timeSinceLogin = moment.now() - (nc_lastLogin * 1000); var serverTimeDiff = this.pageLoadTime - (nc_pageLoad * 1000);
var timeSinceLogin = moment.now() - (serverTimeDiff + (nc_lastLogin * 1000));
// if timeSinceLogin > 30 minutes and user backend allows password confirmation // if timeSinceLogin > 30 minutes and user backend allows password confirmation
return (backendAllowsPasswordConfirmation && timeSinceLogin > 30 * 60 * 1000); return (backendAllowsPasswordConfirmation && timeSinceLogin > 30 * 60 * 1000);
}, },

View File

@ -155,6 +155,7 @@ class JSConfigHelper {
"oc_appswebroots" => str_replace('\\/', '/', json_encode($apps_paths)), // Ugly unescape slashes waiting for better solution "oc_appswebroots" => str_replace('\\/', '/', json_encode($apps_paths)), // Ugly unescape slashes waiting for better solution
"datepickerFormatDate" => json_encode($this->l->l('jsdate', null)), "datepickerFormatDate" => json_encode($this->l->l('jsdate', null)),
'nc_lastLogin' => $lastConfirmTimestamp, 'nc_lastLogin' => $lastConfirmTimestamp,
'nc_pageLoad' => time(),
"dayNames" => json_encode([ "dayNames" => json_encode([
(string)$this->l->t('Sunday'), (string)$this->l->t('Sunday'),
(string)$this->l->t('Monday'), (string)$this->l->t('Monday'),