{{ locale.password.card.caption }}
+diff --git a/assets/js/api.js b/assets/js/api.js index 385da2c..5688a2a 100644 --- a/assets/js/api.js +++ b/assets/js/api.js @@ -40,6 +40,24 @@ function login() { } } +function passwordReset() { + var xhr = postAjax('/api/v1/passwordreset', { + password: document.getElementById('password_input').value, + password_confirm: document.getElementById('password_confirm').value + }); + xhr.onload = function () { + if (xhr.responseText.charAt(0) !== "{") { + return showErrorPopup('Whoops, something went wrong. Try again later.'); + } + response = JSON.parse(xhr.responseText); + if (response.success === true) { + location.pathname = '/pnid/login'; + } else if (response.errors) { + showErrorPopup(response.errors); + } + } +} + function register() { var xhr = postAjax('/api/v1/register', { email: document.getElementById('email_input').value, diff --git a/locales/US_en.json b/locales/US_en.json index 12c8b09..8cd72ba 100644 --- a/locales/US_en.json +++ b/locales/US_en.json @@ -68,6 +68,15 @@ "link_text": "Click here to login." } }, + "password": { + "card": { + "caption": "Forgot password?", + "title": "Reset password", + "password_text": "New password", + "password_confirm_text": "Confirm password", + "button_text": "Reset password" + } + }, "about": { "caption": "What is this?", "title": "About", diff --git a/routes/pnid.js b/routes/pnid.js index c7eb280..b9717bf 100644 --- a/routes/pnid.js +++ b/routes/pnid.js @@ -41,6 +41,17 @@ router.get('/pnid/login', (request, response) => { locale: utilHelper.getLocale('US', 'en') }); }); +// renders password reset page +router.get('/pnid/passwordreset', (request, response) => { + return response.render('password', { + title: 'Pretendo | Password reset', + description: 'On the Pretendo Network ID Dashboard you can manage your personal information and make new virtual consoles to use for login on your home console.', + url: request.protocol + '://' + request.get('host') + request.originalUrl, + baseurl: request.protocol + '://' + request.get('host'), + locale: utilHelper.getLocale('US', 'en'), + user: utilHelper.templateReadyUser(request) + }); +}); // logout router.get('/pnid/logout', userMiddleware.pnidAuthNeeded, (request, response) => { request.logout(); @@ -85,6 +96,26 @@ router.post('/api/v1/login', passport.authenticate('PNIDStrategy'), function (re }); }); +/* +* /api/v1/passwordreset +* +* signs user in +* +* post { +* password +* password_confirm +* } +* return { +* code: http code +* success: boolean +* errors: Strings[messages] +* } +*/ +router.post('/api/v1/passwordreset', function (request, response) { + //TODO make the actual password change + return apiHelper.sendReturn(response, {}); +}); + /* * /api/v1/register * diff --git a/views/password.hbs b/views/password.hbs new file mode 100644 index 0000000..54f41b7 --- /dev/null +++ b/views/password.hbs @@ -0,0 +1,30 @@ + + +
+ {{> metatags }} +{{ locale.password.card.caption }}
+