ReLoginController.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. Ext.define('saas.view.auth.ReLoginController', {
  2. extend: 'Ext.app.ViewController',
  3. alias: 'controller.relogin',
  4. init: function () {
  5. this.callParent(arguments);
  6. },
  7. onAfterRender: function() {
  8. var me = this,
  9. view = me.getView(),
  10. model = me.getViewModel(),
  11. remember = model.get('remember'),
  12. password = model.get('repassword'),
  13. lastSuccess = model.get('lastSuccess'),
  14. form = me.lookup('reloginform'),
  15. passwordField = form.getForm().findField('password');
  16. if(remember && lastSuccess) {
  17. passwordField.setValue(password);
  18. }
  19. },
  20. onLogin: function () {
  21. var me = this,
  22. view = me.getView(),
  23. viewModel = me.getViewModel(),
  24. form = me.lookup('reloginform'),
  25. values = form.getValues();
  26. if(!form.isValid()) {
  27. return;
  28. }
  29. view.mask('请稍等...');
  30. saas.model.Session.login(values.username, values.password)
  31. .then(function (session) {
  32. view.isMasked() && view.unmask();
  33. viewModel.set('session', session);
  34. var cos = session.get("account").companies;
  35. if (cos && cos.length) {
  36. if (cos.length == 1) {
  37. session.get('account').companyId = cos[0].id;
  38. me.fireEvent('login', session);
  39. } else {
  40. Ext.create({
  41. xtype: 'companypicker',
  42. viewModel: {
  43. stores: {
  44. companies: Ext.create('saas.store.Company', {
  45. data: cos
  46. })
  47. }
  48. }
  49. });
  50. }
  51. } else {
  52. me.fireEvent('login', session);
  53. }
  54. me.successReLogin();
  55. })
  56. .then(function() {
  57. let account = viewModel.get('account'),
  58. companyId = account.companyId;
  59. return saas.util.BaseUtil.request({
  60. url: '/api/auth/switch/company',
  61. params: {
  62. companyId: companyId
  63. },
  64. method: 'GET'
  65. }).then(function(res) {
  66. if (res.success) {
  67. var newSession = saas.model.Session.loadData(res.data);
  68. newSession.set('account', account);
  69. // 服务端与本地存在时间差
  70. newSession.set('span', newSession.get('timestamp') - new Date().getTime());
  71. if (!newSession.isValid()) {
  72. throw new Error('切换失败,无效身份令牌');
  73. } else {
  74. return newSession;
  75. }
  76. } else {
  77. Ext.log.error('request failure with code: ', res.code, ', message: ', res.message);
  78. }
  79. });
  80. })
  81. .catch(function (error) {
  82. view.isMasked() && view.unmask();
  83. console.error(error);
  84. saas.util.BaseUtil.showErrorToast('登录失败: ' + error.message);
  85. me.failureReLogin();
  86. });
  87. },
  88. successReLogin: function() {
  89. var me = this,
  90. view = me.getView(),
  91. form = me.lookup('reloginform'),
  92. values = form.getValues();
  93. viewModel = me.getViewModel();
  94. viewModel.set('repassword', values.password);
  95. viewModel.set('lastSuccess', true);
  96. view.close();
  97. },
  98. failureReLogin: function() {
  99. var me = this,
  100. viewModel = me.getViewModel();
  101. viewModel.set('lastSuccess', false);
  102. },
  103. onCancel: function() {
  104. var me = this,
  105. view = me.getView();
  106. view.close();
  107. },
  108. });