127.0.0.1:8000 watch-together / 4b5b1ed
fix refs Seva Luchianov 4 years ago
7 changed file(s) with 49 addition(s) and 16 deletion(s). Raw diff Collapse all Expand all
00 const utils = require('../../../utils');
11 const time = require('../../../utils/time');
2 const snippets = require('../../../utils/snippets');
23 const mailgun = require('../../../utils/mailgun');
34 const broadcast = require('../../../websocket/broadcast');
45 const cookies = require('../../../utils/cookies');
8283 }
8384 return utils.tiny_id();
8485 }).then(function(delete_id) {
85 return generate_token_and_send_email(res,
86 return snippets.generate_token_and_send_email(res,
8687 "delete_account", "delete_id",
8788 req.user.email, "send_account_delete_code_email", {
8889 email_params: {
00 const utils = require('../../../utils');
1 const snippets = require('../../../utils/snippets');
12 const bcrypt = require('bcrypt');
23
34 module.exports = {
4647 email: email
4748 }));
4849
49 return generate_token_and_send_email(res,
50 return snippets.generate_token_and_send_email(res,
5051 "password_reset", "reset_id",
5152 email, "send_password_changed_email"
5253 );
7980 message: "You should already have a valid password reset link, please check your inbox"
8081 }]);
8182 }
82 return generate_token_and_send_email(res,
83 return snippets.generate_token_and_send_email(res,
8384 "password_reset", "reset_id",
8485 req.body.email, "send_password_reset_email"
8586 );
00 const utils = require('../../../utils');
1 const snippets = require('../../../utils/snippets');
12 const bcrypt = require('bcrypt');
23
34 module.exports = {
4748 }));
4849
4950 if (result.changedRows) {
50 return generate_token_and_send_email(res,
51 return snippets.generate_token_and_send_email(res,
5152 "password_reset", "reset_id",
5253 req.body.email, "send_password_changed_email"
5354 );
00 const utils = require('../../utils');
11 const time = require('../../utils/time');
2 const snippets = require('../../utils/snippets');
23 const mailgun = require('../../utils/mailgun');
34 const bcrypt = require('bcrypt');
45 const query_string = require('query-string');
146147 if (confirmation.expires > Date.now()) {
147148 return utils.reject("There is already a valid confirmation link, please check your inbox");
148149 }
149 return utils.generate_token(
150 return snippets.generate_token(
150151 "email_confirmations",
151152 "confirmation_id",
152153 confirmation.email
215215 },
216216 resolve: data => new Promise(r => r(data)),
217217 reject: error => new Promise((_, r) => r(error)),
218 generate_token: function(table, key, email, overrides) {
219 overrides = overrides || {};
220 let token = overrides.token || uuid();
221 // So there either is no token at all, or there is one but it has expired
222 return query(
223 `INSERT INTO ${table} (${key}, email, expires) ` +
224 `VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE ${key}=VALUES(${key}), expires=VALUES(expires)`,
225 [token, email, Date.now() + (overrides.ttl || time.one_day)]
226 ).then(() => token);
227 },
228218 setIntervalAndTriggerImmediate: function(callback, interval) {
229219 setTimeout(callback);
230220 return setInterval(callback, interval);
0 const utils = require('.');
1 const mailgun = require('./mailgun');
2 const query_string = require('query-string');
3
4 function generate_token(table, key, email, overrides) {
5 overrides = overrides || {};
6 let token = overrides.token || uuid();
7 // So there either is no token at all, or there is one but it has expired
8 return utils.query(
9 `INSERT INTO ${table} (${key}, email, expires) ` +
10 `VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE ${key}=VALUES(${key}), expires=VALUES(expires)`,
11 [token, email, Date.now() + (overrides.ttl || time.one_day)]
12 ).then(() => token);
13 }
14
15 module.exports = {
16 generate_token,
17 generate_token_and_send_email: function(res, table, token_id, email, send_command, overrides) {
18 overrides = overrides || {};
19 return generate_token(
20 table, token_id, email, overrides
21 ).catch(utils.handle_err.sql(res)).then(function(token) {
22 return mailgun[send_command](email, overrides.email_params || {
23 query: query_string.stringify({
24 token: token
25 })
26 }).catch(utils.handle_err.mailgun(res)).catch(function(error) {
27 // If the confirmation email fails to send, we need to delete the row
28 // from the email_confirmations table so that it can be sent again.
29 return utils.query(`DELETE FROM ${table} WHERE ?`, {
30 [token_id]: token
31 }).catch(utils.handle_err.sql(res, true)).finally(function() {
32 return utils.reject(error);
33 });
34 });
35 });
36 }
37 }
4141 const query_string = require('query-string');
4242 const time = require('./utils/time');
4343 const mailgun = require('./utils/mailgun');
44 const snippets = require('./utils/snippets');
4445 const cookies = require('./utils/cookies');
4546 const broadcast = require('./websocket/broadcast');
4647 const ws_utils = require('./websocket/utils');
9899 // token generated (registered through CLI)
99100 // OR they haven't confirmed their email yet
100101 // and their token has expired.
101 return utils.generate_token(
102 return snippets.generate_token(
102103 "email_confirmations",
103104 "confirmation_id",
104105 email