SFRA Server-side Javascript - Source: app_storefront_base/cartridge/scripts/helpers/accountHelpers.js menu

SFRA / Server-side JS / Source: app_storefront_base/cartridge/scripts/helpers/accountHelpers.js

  1. 'use strict';
  2. var URLUtils = require('dw/web/URLUtils');
  3. var endpoints = require('*/cartridge/config/oAuthRenentryRedirectEndpoints');
  4. /**
  5. * Creates an account model for the current customer
  6. * @param {string} redirectUrl - rurl of the req.querystring
  7. * @param {string} privacyCache - req.session.privacyCache
  8. * @param {boolean} newlyRegisteredUser - req.session.privacyCache
  9. * @returns {string} a redirect url
  10. */
  11. function getLoginRedirectURL(redirectUrl, privacyCache, newlyRegisteredUser) {
  12. var endpoint = 'Account-Show';
  13. var result;
  14. var targetEndPoint = redirectUrl
  15. ? parseInt(redirectUrl, 10)
  16. : 1;
  17. var registered = newlyRegisteredUser ? 'submitted' : 'false';
  18. var argsForQueryString = privacyCache.get('args');
  19. if (targetEndPoint && endpoints[targetEndPoint]) {
  20. endpoint = endpoints[targetEndPoint];
  21. }
  22. if (argsForQueryString) {
  23. result = URLUtils.url(endpoint, 'registration', registered, 'args', argsForQueryString).relative().toString();
  24. } else {
  25. result = URLUtils.url(endpoint, 'registration', registered).relative().toString();
  26. }
  27. return result;
  28. }
  29. /**
  30. * Send an email that would notify the user that account was created
  31. * @param {obj} registeredUser - object that contains user's email address and name information.
  32. */
  33. function sendCreateAccountEmail(registeredUser) {
  34. var emailHelpers = require('*/cartridge/scripts/helpers/emailHelpers');
  35. var Site = require('dw/system/Site');
  36. var Resource = require('dw/web/Resource');
  37. var userObject = {
  38. email: registeredUser.email,
  39. firstName: registeredUser.firstName,
  40. lastName: registeredUser.lastName,
  41. url: URLUtils.https('Login-Show')
  42. };
  43. var emailObj = {
  44. to: registeredUser.email,
  45. subject: Resource.msg('email.subject.new.registration', 'registration', null),
  46. from: Site.current.getCustomPreferenceValue('customerServiceEmail') || 'no-reply@testorganization.com',
  47. type: emailHelpers.emailTypes.registration
  48. };
  49. emailHelpers.sendEmail(emailObj, 'checkout/confirmation/accountRegisteredEmail', userObject);
  50. }
  51. /**
  52. * Gets the password reset token of a customer
  53. * @param {Object} customer - the customer requesting password reset token
  54. * @returns {string} password reset token string
  55. */
  56. function getPasswordResetToken(customer) {
  57. var Transaction = require('dw/system/Transaction');
  58. var passwordResetToken;
  59. Transaction.wrap(function () {
  60. passwordResetToken = customer.profile.credentials.createResetPasswordToken();
  61. });
  62. return passwordResetToken;
  63. }
  64. /**
  65. * Sends the email with password reset instructions
  66. * @param {string} email - email for password reset
  67. * @param {Object} resettingCustomer - the customer requesting password reset
  68. */
  69. function sendPasswordResetEmail(email, resettingCustomer) {
  70. var Resource = require('dw/web/Resource');
  71. var Site = require('dw/system/Site');
  72. var emailHelpers = require('*/cartridge/scripts/helpers/emailHelpers');
  73. var passwordResetToken = getPasswordResetToken(resettingCustomer);
  74. var url = URLUtils.https('Account-SetNewPassword', 'Token', passwordResetToken);
  75. var objectForEmail = {
  76. passwordResetToken: passwordResetToken,
  77. firstName: resettingCustomer.profile.firstName,
  78. lastName: resettingCustomer.profile.lastName,
  79. url: url
  80. };
  81. var emailObj = {
  82. to: email,
  83. subject: Resource.msg('subject.profile.resetpassword.email', 'login', null),
  84. from: Site.current.getCustomPreferenceValue('customerServiceEmail') || 'no-reply@testorganization.com',
  85. type: emailHelpers.emailTypes.passwordChanged
  86. };
  87. emailHelpers.sendEmail(emailObj, 'account/password/passwordResetEmail', objectForEmail);
  88. }
  89. /**
  90. * Send an email that would notify the user that account was edited
  91. * @param {obj} profile - object that contains user's profile information.
  92. */
  93. function sendAccountEditedEmail(profile) {
  94. var emailHelpers = require('*/cartridge/scripts/helpers/emailHelpers');
  95. var Site = require('dw/system/Site');
  96. var Resource = require('dw/web/Resource');
  97. var userObject = {
  98. firstName: profile.firstName,
  99. lastName: profile.lastName,
  100. url: URLUtils.https('Login-Show')
  101. };
  102. var emailObj = {
  103. to: profile.email,
  104. subject: Resource.msg('email.subject.account.edited', 'account', null),
  105. from: Site.current.getCustomPreferenceValue('customerServiceEmail') || 'no-reply@testorganization.com',
  106. type: emailHelpers.emailTypes.accountEdited
  107. };
  108. emailHelpers.sendEmail(emailObj, 'account/components/accountEditedEmail', userObject);
  109. }
  110. module.exports = {
  111. getLoginRedirectURL: getLoginRedirectURL,
  112. sendCreateAccountEmail: sendCreateAccountEmail,
  113. sendPasswordResetEmail: sendPasswordResetEmail,
  114. sendAccountEditedEmail: sendAccountEditedEmail
  115. };