Skip to content

Commit 0bbdf23

Browse files
committed
[core] improve countly user password change experience
1 parent c11e45c commit 0bbdf23

File tree

3 files changed

+35
-6
lines changed

3 files changed

+35
-6
lines changed

api/parts/mgmt/mail.js

+13-2
Original file line numberDiff line numberDiff line change
@@ -98,16 +98,26 @@ mail.sendLocalizedMessage = function(lang, to, subject, message, callback) {
9898
});
9999
};
100100

101+
/**
102+
* encode string to escape html code
103+
* @param {string} s inputed string
104+
* @return {string} newString new string escaped html code
105+
*/
106+
mail.escapedHTMLString = function(s) {
107+
const newString = s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
108+
return newString;
109+
}
101110
/**
102111
* Email to send to new members
103112
* @param {object} member - member document
104113
* @param {string} memberPassword - OTP for member to authorize
105114
**/
106115
mail.sendToNewMember = function(member, memberPassword) {
107116
member.lang = member.lang || "en";
117+
const password = mail.escapedHTMLString(memberPassword);
108118
mail.lookup(function(err, host) {
109119
localize.getProperties(member.lang, function(err2, properties) {
110-
var message = localize.format(properties["mail.new-member"], mail.getUserFirstName(member), host, member.username, memberPassword);
120+
var message = localize.format(properties["mail.new-member"], mail.getUserFirstName(member), host, member.username, password);
111121
mail.sendMessage(member.email, properties["mail.new-member-subject"], message);
112122
});
113123
});
@@ -120,9 +130,10 @@ mail.sendToNewMember = function(member, memberPassword) {
120130
**/
121131
mail.sendToUpdatedMember = function(member, memberPassword) {
122132
member.lang = member.lang || "en";
133+
const password = mail.escapedHTMLString(memberPassword);
123134
mail.lookup(function(err, host) {
124135
localize.getProperties(member.lang, function(err2, properties) {
125-
var message = localize.format(properties["mail.password-change"], mail.getUserFirstName(member), host, member.username, memberPassword);
136+
var message = localize.format(properties["mail.password-change"], mail.getUserFirstName(member), host, member.username, password);
126137
mail.sendMessage(member.email, properties["mail.password-change-subject"], message);
127138
});
128139
});

extend/aws_ses.example.js

+11-2
Original file line numberDiff line numberDiff line change
@@ -46,21 +46,30 @@ module.exports = function(mail) {
4646
}, callback);
4747
};
4848

49+
mail.escapedHTMLString = function(s) {
50+
const newString = s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
51+
return newString;
52+
};
53+
4954
mail.sendToNewMember = function(member, memberPassword) {
55+
const password = mail.escapedHTMLString(memberPassword);
56+
5057
mail.lookup(function(err, host) {
5158
mail.sendMessage(member.email, "Your " + company + " Account",
5259
"Hi " + mail.getUserFirstName(member) + ",<br/><br/>\n" +
5360
"Your " + company + " account on <a href='" + host + "'>" + host + "</a> is created with the following details;<br/><br/>\n" +
54-
"Username: " + member.username + "<br/>Password: " + memberPassword + "<br/><br/>\n" +
61+
"Username: " + member.username + "<br/>Password: " + password + "<br/><br/>\n" +
5562
"Enjoy,<br/>A fellow " + company + " Admin");
5663
});
5764
};
5865

5966
mail.sendToUpdatedMember = function(member, memberPassword) {
67+
const password = mail.escapedHTMLString(memberPassword);
68+
6069
mail.lookup(function(err, host) {
6170
mail.sendMessage(member.email, "" + company + " Account - Password Change", "Hi " + mail.getUserFirstName(member) + ",<br/><br/>\n" +
6271
"Your password for your " + company + " account on <a href='" + host + "'>" + host + "</a> has been changed. Below you can find your updated account details;<br/><br/>\n" +
63-
"Username: " + member.username + "<br/>Password: " + memberPassword + "<br/><br/>\n" +
72+
"Username: " + member.username + "<br/>Password: " + password + "<br/><br/>\n" +
6473
"Best,<br/>A fellow " + company + " Admin");
6574
});
6675
};

extend/mail.example.js

+11-2
Original file line numberDiff line numberDiff line change
@@ -41,21 +41,30 @@ module.exports = function(mail) {
4141
}, callback);
4242
};
4343

44+
mail.escapedHTMLString = function(s) {
45+
const newString = s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
46+
return newString;
47+
};
48+
4449
mail.sendToNewMember = function(member, memberPassword) {
50+
const password = mail.escapedHTMLString(memberPassword);
51+
4552
mail.lookup(function(err, host) {
4653
mail.sendMessage(member.email, "Your " + company + " Account",
4754
"Hi " + mail.getUserFirstName(member) + ",<br/><br/>\n" +
4855
"Your " + company + " account on <a href='" + host + "'>" + host + "</a> is created with the following details;<br/><br/>\n" +
49-
"Username: " + member.username + "<br/>Password: " + memberPassword + "<br/><br/>\n" +
56+
"Username: " + member.username + "<br/>Password: " + password + "<br/><br/>\n" +
5057
"Enjoy,<br/>A fellow " + company + " Admin");
5158
});
5259
};
5360

5461
mail.sendToUpdatedMember = function(member, memberPassword) {
62+
const password = mail.escapedHTMLString(memberPassword);
63+
5564
mail.lookup(function(err, host) {
5665
mail.sendMessage(member.email, "" + company + " Account - Password Change", "Hi " + mail.getUserFirstName(member) + ",<br/><br/>\n" +
5766
"Your password for your " + company + " account on <a href='" + host + "'>" + host + "</a> has been changed. Below you can find your updated account details;<br/><br/>\n" +
58-
"Username: " + member.username + "<br/>Password: " + memberPassword + "<br/><br/>\n" +
67+
"Username: " + member.username + "<br/>Password: " + password + "<br/><br/>\n" +
5968
"Best,<br/>A fellow " + company + " Admin");
6069
});
6170
};

0 commit comments

Comments
 (0)