login.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /**
  2. * Copyright © Magento, Inc. All rights reserved.
  3. * See COPYING.txt for license details.
  4. */
  5. define([
  6. 'jquery',
  7. 'mage/storage',
  8. 'Magento_Ui/js/model/messageList',
  9. 'Magento_Customer/js/customer-data',
  10. 'mage/translate'
  11. ], function ($, storage, globalMessageList, customerData, $t) {
  12. 'use strict';
  13. var callbacks = [],
  14. /**
  15. * @param {Object} loginData
  16. * @param {String} redirectUrl
  17. * @param {*} isGlobal
  18. * @param {Object} messageContainer
  19. */
  20. action = function (loginData, redirectUrl, isGlobal, messageContainer) {
  21. messageContainer = messageContainer || globalMessageList;
  22. return storage.post(
  23. 'customer/ajax/login',
  24. JSON.stringify(loginData),
  25. isGlobal
  26. ).done(function (response) {
  27. if (response.errors) {
  28. messageContainer.addErrorMessage(response);
  29. callbacks.forEach(function (callback) {
  30. callback(loginData);
  31. });
  32. } else {
  33. callbacks.forEach(function (callback) {
  34. callback(loginData);
  35. });
  36. customerData.invalidate(['customer']);
  37. if (response.redirectUrl) {
  38. window.location.href = response.redirectUrl;
  39. } else if (redirectUrl) {
  40. window.location.href = redirectUrl;
  41. } else {
  42. location.reload();
  43. }
  44. }
  45. }).fail(function () {
  46. messageContainer.addErrorMessage({
  47. 'message': $t('Could not authenticate. Please try again later')
  48. });
  49. callbacks.forEach(function (callback) {
  50. callback(loginData);
  51. });
  52. });
  53. };
  54. /**
  55. * @param {Function} callback
  56. */
  57. action.registerLoginCallback = function (callback) {
  58. callbacks.push(callback);
  59. };
  60. return action;
  61. });