Bladeren bron

added Username or password do not match" + lockout warning

Sravan 1 week geleden
bovenliggende
commit
d045847a59
1 gewijzigde bestanden met toevoegingen van 11 en 1 verwijderingen
  1. 11
    1
      server/routes.js

+ 11
- 1
server/routes.js Bestand weergeven

@@ -65,12 +65,22 @@ route('POST', '/api/login', async (req, res) => {
65 65
   if (existing && existing.active === 0) return json(res, 403, { error: 'This account has been deactivated' });
66 66
 
67 67
   let u = (existing && A.verifyPassword(password, existing.pw_salt, existing.pw_hash)) ? existing : null;
68
+  let bzMsg = null;
68 69
   if (!u) {
69 70
     const bz = await BZ.validateLogin(email, password);
70 71
     if (bz.ok) u = provisionFromBizgaze(email, bz);
71 72
     else if (bz.error) return json(res, 503, { error: bz.error });
73
+    else bzMsg = bz.message || null; // BizGaze was configured and rejected the credentials
74
+  }
75
+  if (!u) {
76
+    // Specific feedback where we can be truthful:
77
+    if (existing) return json(res, 401, { error: 'Incorrect password. Please try again.' });
78
+    // No local account. BizGaze (the identity provider) doesn't reveal whether an email
79
+    // exists, so when it rejects we surface its own message (covers wrong password +
80
+    // any lockout warning). Only when BizGaze isn't in play can we say "not registered".
81
+    if (bzMsg) return json(res, 401, { error: bzMsg });
82
+    return json(res, 404, { error: 'This email is not registered.' });
72 83
   }
73
-  if (!u) return json(res, 401, { error: 'invalid credentials' });
74 84
 
75 85
   const tok = A.token();
76 86
   const ttl = remember ? 1000 * 60 * 60 * 24 * 30 : SESSION_TTL; // 30 days if remembered, else 24h

Laden…
Annuleren
Opslaan