login.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. import store from "../store";
  2. import Cache from '../utils/cache';
  3. import {
  4. Debounce
  5. } from '@/utils/validate.js'
  6. // #ifdef H5
  7. import {
  8. isWeixin
  9. } from "../utils";
  10. import auth from './wechat';
  11. // #endif
  12. import {
  13. LOGIN_STATUS,
  14. USER_INFO,
  15. EXPIRES_TIME,
  16. STATE_R_KEY,
  17. BACK_URL
  18. } from './../config/cache';
  19. function prePage() {
  20. let pages = getCurrentPages();
  21. let prePage = pages[pages.length - 1];
  22. return prePage.route;
  23. }
  24. export const toLogin = Debounce(_toLogin, 800)
  25. export function _toLogin(push, pathLogin) {
  26. store.commit("LOGOUT");
  27. let path = prePage();
  28. let login_back_url = Cache.get(BACK_URL);
  29. // #ifdef APP
  30. uni.navigateTo({
  31. url: '/pages/users/login/index'
  32. })
  33. return
  34. // #endif
  35. // #ifdef H5
  36. // path = location.href;
  37. // path = location.pathname + location.search;
  38. let url_list = location.href?.split("?");
  39. if (url_list.length > 1) {
  40. path = "/" + path + "?" + url_list[1]
  41. }
  42. // #endif
  43. if (!pathLogin) {
  44. pathLogin = '/page/users/login/index'
  45. Cache.set('login_back_url', path);
  46. }
  47. // #ifdef H5
  48. if (isWeixin()) {
  49. let urlData = location.pathname + location.search
  50. if (urlData.indexOf('?') !== -1) {
  51. urlData += '&go_longin=1';
  52. } else {
  53. urlData += '?go_longin=1';
  54. }
  55. if (!Cache.has('snsapiKey')) {
  56. auth.oAuth('snsapi_base', urlData);
  57. } else {
  58. if (['/pages/user/index'].indexOf(login_back_url) == -1) {
  59. uni.navigateTo({
  60. url: '/pages/users/wechat_login/index'
  61. })
  62. }
  63. }
  64. } else {
  65. if (['/pages/user/index'].indexOf(login_back_url) == -1) {
  66. uni.navigateTo({
  67. url: '/pages/users/login/index'
  68. })
  69. }
  70. }
  71. // #endif
  72. if (['pages/user/index', '/pages/user/index'].indexOf(login_back_url) == -1) {
  73. // #ifdef MP
  74. uni.navigateTo({
  75. url: '/pages/users/wechat_login/index'
  76. })
  77. // #endif
  78. }
  79. }
  80. export function checkLogin() {
  81. let token = Cache.get(LOGIN_STATUS);
  82. let expiresTime = Cache.get(EXPIRES_TIME);
  83. let newTime = Math.round(new Date() / 1000);
  84. if (expiresTime < newTime || !token) {
  85. Cache.clear(LOGIN_STATUS);
  86. Cache.clear(EXPIRES_TIME);
  87. Cache.clear(USER_INFO);
  88. Cache.clear(STATE_R_KEY);
  89. return false;
  90. } else {
  91. store.commit('UPDATE_LOGIN', token);
  92. let userInfo = Cache.get(USER_INFO, true);
  93. if (userInfo) {
  94. store.commit('UPDATE_USERINFO', userInfo);
  95. }
  96. return true;
  97. }
  98. }