sportsbet-mobile
Version:
Sportsbet mobile
153 lines (130 loc) • 3.78 kB
text/typescript
///<reference path=".#ts/client.d.ts" />
interface Templates {
forgotPassword: Template;
}
Template.forgotPassword.helpers({
resetPassword: function () {
return Session.get('resetToken');
},
errors: function() {
return Users.Profile.db.errors('register');
},
tokenSent: function () {
return Session.get('tokenSent');
},
loading: function () {
return Session.get('loading') ? 'loading' : '';
},
showGoogleAuth: function () {
return Session.get('showGoogleAuth');
},
useGoogleAuth: function () {
return Session.get('showGoogleAuth') ? 'checked' : null;
}
});
Template.forgotPassword.onDestroyed(function () {
Session.set('resetToken', undefined)
});
Template.forgotPassword.events({
'click .useGoogleAuth': function (e: MeteorTemplateEvent, t: MeteorTemplate) {
e.preventDefault();
var checkbox = t.find('#useGoogleAuth');
var isChecked = checkbox.hasAttribute('checked');
if (isChecked) {
checkbox.removeAttribute('checked');
}
else {
checkbox.setAttribute('checked', 'checked');
}
Session.set('showGoogleAuth', isChecked ? false : true);
},
'submit form[name="login"]': function (e: MeteorTemplateEvent) {
e.preventDefault();
var tpl = Template.instance();
var $form = $(e.target);
var $emailField = $form.find('#email');
var data = $form.serializeObject();
var errorContainer = $form.find('.generalError');
errorContainer.html('');
errorContainer.hide();
if (!data.email) {
$emailField.anim('shake');
googleSend({
'eventCategory': 'UP Recovery',
'eventAction': 'Email Verification Error',
'eventLabel': 'Empty',
'pageEventArea': 'Main'
});
return;
}
Session.set('loading', true);
Users.User.forgotPassword(data.email, function (err?) {
if (err) {
Session.set('loading', false);
$emailField.anim('shake');
if (err.error == '404') {
errorContainer.append('<li>No user was found with this email</li>');
}
errorContainer.show();
googleSend({
'eventCategory': 'UP Recovery',
'eventAction': 'Email Verification Error',
'eventLabel': 'Email Not Found',
'pageEventArea': 'Main'
});
return;
}
Session.set('loading', false);
tpl.setVar('tokenSent', true);
googleSend({
'eventCategory': 'UP Recovery',
'eventAction': 'Email Sent',
'pageEventArea': 'Main'
});
});
},
'submit form[name="reset"]': function (e: MeteorTemplateEvent) {
e.preventDefault();
var $form = $(e.target);
var data = $form.serializeObject();
var errorContainer = $form.find('.generalError');
errorContainer.hide();
errorContainer.html('');
errorContainer.append("<ul>");
var listContainer = errorContainer.find('ul');
var errors = Users.Profile.db.validate(e.target);
if (!_.isEmpty(errors)) {
errorContainer.show();
for (var errType in errors) {
listContainer.append('<li>' + errors[errType] + '</li>');
}
return;
}
if (!data.otpCode && data.useGoogleAuth) {
errorContainer.append('<li>' + i18n('users.login.errorEmptyGA') + '</li>');
errorContainer.show();
$form.find('input[name="otpCode"]').anim('shake');
return;
}
Otp.resetPassword(Session.get('resetToken'), data.password, data.otpCode == undefined ? '' : data.otpCode, function (err?: any) {
if (err) {
googleSend({
'eventCategory': 'UP Recovery',
'eventAction': 'New Password Error',
'eventLabel': 'Invalid Token',
'pageEventArea': 'Main'
});
listContainer.append('<li>' + err.reason + '</li>');
errorContainer.show();
return;
}
Session.set('resetToken', null);
Session.set('tokenSent', null);
googleSend({
'eventCategory': 'UP Recovery',
'eventAction': 'New Password Selected',
'pageEventArea': 'Main'
});
});
}
});