diff --git a/Packages/active-entry/components/changePassword/changePassword.js b/Packages/active-entry/components/changePassword/changePassword.js
index cf0c56a4d..c903840ce 100755
--- a/Packages/active-entry/components/changePassword/changePassword.js
+++ b/Packages/active-entry/components/changePassword/changePassword.js
@@ -44,9 +44,20 @@ Template.changePassword.helpers({
} else {
return "border: 1px solid gray";
}
+ },
+
+ entryErrorMessages: function() {
+ var errorMessages = [];
+ Object.keys(ActiveEntry.errorMessages.all()).forEach(function(key) {
+ if ((key === "password" || key === "confirm") && ActiveEntry.errorMessages.get(key)) {
+ errorMessages.push(ActiveEntry.errorMessages.get(key));
+ }
+ });
+ return errorMessages;
}
});
+
Template.changePassword.events({
'change, keyup #changePasswordPagePasswordInput': function (event, template) {
var password = $('[name="password"]').val();
@@ -73,12 +84,37 @@ Template.changePassword.events({
ActiveEntry.verifyConfirmPassword(password, confirmPassword);
ActiveEntry.errorMessages.set('changePasswordError', null);
- Accounts.changePassword(oldPassword, confirmPassword, function(error) {
- if (error) {
- console.warn(error);
- return;
- }
- console.log('Password changed!');
- });
+
+ if (ActiveEntry.successMessages.get('password') && ActiveEntry.successMessages.get('confirm') && oldPassword) {
+ Meteor.call("checkPasswordExistence", new String(password).hashCode(), function(error, result) {
+ if (error) {
+ console.warn(error.message);
+ ActiveEntry.errorMessages.set('changePasswordError', error.message);
+
+ } else {
+ if (result) {
+ ActiveEntry.errorMessages.set('changePasswordError', 'Password is used before. Please change your new password.');
+ } else {
+ ActiveEntry.errorMessages.set('changePasswordError', null);
+
+ // If password is not found in password history, change the password
+ Accounts.changePassword(oldPassword, confirmPassword, function(error) {
+ if (error) {
+ console.warn(error);
+ ActiveEntry.errorMessages.set('changePasswordError', error.message);
+ } else {
+ // Save the new password
+ ActiveEntry.insertHashedPassword(confirmPassword);
+ // Logout
+ ActiveEntry.signOut();
+ // Go to signIn page for new entry
+ Router.go('/entrySignIn');
+ }
+ });
+ }
+ }
+ });
+ }
+
}
});
diff --git a/Packages/active-entry/components/entrySignIn/entrySignIn.html b/Packages/active-entry/components/entrySignIn/entrySignIn.html
index b3202cae5..712801ea0 100755
--- a/Packages/active-entry/components/entrySignIn/entrySignIn.html
+++ b/Packages/active-entry/components/entrySignIn/entrySignIn.html
@@ -30,7 +30,7 @@
diff --git a/Packages/active-entry/components/entrySignIn/entrySignIn.js b/Packages/active-entry/components/entrySignIn/entrySignIn.js
index c6420a56f..f6af2401b 100755
--- a/Packages/active-entry/components/entrySignIn/entrySignIn.js
+++ b/Packages/active-entry/components/entrySignIn/entrySignIn.js
@@ -65,8 +65,8 @@ Template.entrySignIn.helpers({
return "border: 1px solid gray";
}
}
-});
+});
//==================================================================================================
// COMPONENT OUTPUTS
@@ -90,24 +90,28 @@ Template.entrySignIn.events({
ActiveEntry.verifyEmail(email);
ActiveEntry.errorMessages.set('signInError', null);
+ setSignInButtonStyling();
},
'change input[name="email"]': function (event, template) {
var email = $('input[name="email"]').val();
ActiveEntry.verifyEmail(email);
ActiveEntry.errorMessages.set('signInError', null);
+ setSignInButtonStyling();
},
'keyup #signInPagePasswordInput': function (event, template) {
var password = $('input[name="password"]').val();
ActiveEntry.verifyPassword(password);
ActiveEntry.errorMessages.set('signInError', null);
+ setSignInButtonStyling();
},
'change #signInPagePasswordInput': function (event, template) {
var password = $('input[name="password"]').val();
ActiveEntry.verifyPassword(password);
ActiveEntry.errorMessages.set('signInError', null);
+ setSignInButtonStyling();
},
// 'submit': function (event, template) {
// event.preventDefault();
@@ -128,13 +132,7 @@ Template.entrySignIn.events({
},
'keyup #entrySignIn': function(event, template) {
if(event.keyCode == 13) {
- ActiveEntry.verifyEmail($("#signInPageEmailInput").val());
-
- if (!ActiveEntry.errorMessages.get('signInError') &&
- ActiveEntry.successMessages.get('email') &&
- $("#signInPagePasswordInput").val()) {
- $("#signInToAppButton").click();
- }
+ $("#signInToAppButton").click();
}
}
});
@@ -142,3 +140,18 @@ Template.entrySignIn.events({
//==================================================================================================
+
+// Sets SignInButton Styling according to email and password fields
+function setSignInButtonStyling() {
+ var signInToAppButton = $("#signInToAppButton");
+ if ($("#signInPagePasswordInput").val() && ActiveEntry.successMessages.get('email')) {
+ // Set button as enable
+ signInToAppButton.removeClass("disabledButton");
+ signInToAppButton.attr("disabled", false);
+ } else {
+ signInToAppButton.addClass("disabledButton");
+ signInToAppButton.attr("disabled", true);
+
+
+ }
+}
\ No newline at end of file
diff --git a/Packages/active-entry/components/entrySignIn/entrySignIn.less b/Packages/active-entry/components/entrySignIn/entrySignIn.less
index 5b3b93e34..4cc2f5fc3 100755
--- a/Packages/active-entry/components/entrySignIn/entrySignIn.less
+++ b/Packages/active-entry/components/entrySignIn/entrySignIn.less
@@ -14,4 +14,18 @@
color: red;
font-weight: bold;
}
-}
+
+ .disabledButton {
+ border: none;
+ background-image: none;
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ filter: alpha(opacity=40);
+ -khtml-opacity: 0.40;
+ -moz-opacity: 0.40;
+ opacity: 0.40;
+ cursor: not-allowed;
+ box-shadow: none;
+ }
+
+
+}
\ No newline at end of file
diff --git a/Packages/active-entry/components/entrySignUp/entrySignUp.html b/Packages/active-entry/components/entrySignUp/entrySignUp.html
index b84c44103..05a15a177 100755
--- a/Packages/active-entry/components/entrySignUp/entrySignUp.html
+++ b/Packages/active-entry/components/entrySignUp/entrySignUp.html
@@ -11,13 +11,6 @@