FSN#37536 Nieuwe sessie bij wachtwoord wijzigen

svn path=/Website/trunk/; revision=31349
This commit is contained in:
Jos Groot Lipman
2016-11-03 12:42:22 +00:00
parent ea0ae617ad
commit d7cc0c5465
3 changed files with 33 additions and 2 deletions

View File

@@ -68,6 +68,11 @@ if (!clearpassword)
// alle oude fac_session opruimen gebeurt door een trigger op PRS_PERSLID
shared.trackaction("PRSLOG", theUser_key, L("lcl_pwd_success"));
setpassword(theUser_key, newPassword);
if (theUser_key == user_key)
{
doLogin(user_key); // Want credentials gewijzigd
}
if (clearpassword) // Eventuele OTP ook wissen
{
var sql = "UPDATE prs_perslid"
@@ -88,6 +93,6 @@ Session.Contents.Remove("must_reset_password");
// Het is niet helemaal zuiver dat het FAC_SESSION record van onszelf nu
// verwijderd is. Daar hebben we in de praktijk geen last van (dd. 5.3.2)
var result = { message: L("lcl_pwd_success"), success: true };
var result = { toaster: L("lcl_pwd_success"), success: true };
Response.Write(JSON.stringify(result));
%>

View File

@@ -100,9 +100,17 @@ function doLogin(prs_key, params)
+ " WHERE prs_perslid_key=" + user_key;
Oracle.Execute(registersql);
Session("user_key") = user_key; /* Nu ben je pas *echt* ingelogd
Session("user_key") = user_key; // Nu ben je pas *echt* ingelogd
/* global */ user = new Perslid(user_key);
// Normaal gesproken zou ik hier new Date() gebruiken
// Omdat zelfs kleine afwijkingen al grote problemen zouden kunnen
// geven consequent altijd de Oracle-tijd gebruiken
var sql = "SELECT SYSDATE FROM DUAL";
var oRs = Oracle.Execute(sql);
Session("login_date") = new Date(oRs(0).Value).getTime();
oRs.Close();
// FACFAC tracken we altijd
if (!params.noFacSession) // fac_scan_cust genereert er anders te veel
{

View File

@@ -54,6 +54,7 @@ Perslid.prototype._require_prs_perslid = function __require_prs_perslid()
+ " , p.prs_perslid_oslogin2"
+ " , p.prs_perslid_wachtwoord_hash"
+ " , p.prs_perslid_otpsecret"
+ " , prs_perslid_credentials_datum"
+ " , p.alg_onroerendgoed_keys"
+ " , p.alg_onroerendgoed_type"
+ " , p.prs_perslid_bezetdatum"
@@ -88,6 +89,7 @@ Perslid.prototype._require_prs_perslid = function __require_prs_perslid()
this._prs_perslid_oslogin2 = oRs("prs_perslid_oslogin2").value;
this._prs_perslid_haspw = (oRs("prs_perslid_wachtwoord_hash").value != null);
this._prs_perslid_otpsecret = oRs("prs_perslid_otpsecret").value;
this._prs_perslid_credentials_datum = new Date(oRs("prs_perslid_credentials_datum").Value);
this._alg_onroerendgoed_keys = oRs("alg_onroerendgoed_keys").value;
this._alg_onroerendgoed_type = oRs("alg_onroerendgoed_type").value;
this._prs_perslid_bezetdatum = oRs("prs_perslid_bezetdatum").value;
@@ -496,6 +498,22 @@ Perslid.prototype.password_expired = function _password_expired()
return false;
return this._prs_perslid_wachtwoord_exp < (new Date);
}
// Als de credentials zijn gewijzigd *nadat* je bent ingelogd
// gaan we moeilijk doen (vanuit common.inc)
Perslid.prototype.credentials_changed = function _credentials_changed()
{
this._require_prs_perslid();
var login_date = new Date(Session("login_date"));
var is_changed = false;
if (this._prs_perslid_credentials_datum > login_date)
{
__DoLog("Session is expired! cred={0}, login={1}".format(toDateTimeString(this._prs_perslid_credentials_datum, true), toDateTimeString(login_date, true)), "#f00");
is_changed = true;
}
return is_changed;
}
Perslid.prototype.prs_perslid_apikey = function()
{
this._require_prs_perslid();