You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
crmeb/app/libs/login.js

136 lines
3.1 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import store from "../store";
import Cache from '../utils/cache';
import { Debounce } from '@/utils/validate.js'
// #ifdef H5
import { isWeixin } from "../utils";
import auth from './wechat';
// #endif
import { LOGIN_STATUS, USER_INFO, EXPIRES_TIME, STATE_R_KEY, BACK_URL} from './../config/cache';
const LOGIN_PAGE_ROUTE = 'pages/users/login/index';
const WECHAT_LOGIN_PAGE_ROUTE = 'pages/users/wechat_login/index';
function normalizeRoute(route) {
return (route || '').replace(/^\//, '');
}
function getPrevPageRoute() {
const pages = getCurrentPages();
if (pages.length < 2) {
return '';
}
return normalizeRoute(pages[pages.length - 2].route);
}
/**
* 登录页 ⇄ 微信登录页切换:上一页已是目标页则返回,避免反复 navigateTo 堆栈
*/
export function switchLoginPage(url) {
const targetRoute = normalizeRoute((url || '').split('?')[0].replace(/^\//, ''));
const prevRoute = getPrevPageRoute();
if (prevRoute && prevRoute === targetRoute && url.indexOf('?') === -1) {
uni.navigateBack();
return;
}
uni.navigateTo({ url });
}
/**
* 微信授权后进入账号绑定页replace 当前页,避免栈里叠多层登录相关页面)
*/
export function openLoginBindPage(authKey) {
const url = `/pages/users/login/index?bindWechat=1&authKey=${encodeURIComponent(authKey)}`;
const prevRoute = getPrevPageRoute();
if (prevRoute === LOGIN_PAGE_ROUTE) {
uni.redirectTo({ url });
return;
}
uni.redirectTo({ url });
}
function prePage(){
let pages = getCurrentPages();
let prePage = pages[pages.length - 1];
return prePage.route;
}
export const toLogin = Debounce(_toLogin,800)
export function _toLogin(push, pathLogin) {
store.commit("LOGOUT");
let path = prePage();
let login_back_url = Cache.get(BACK_URL);
// #ifdef APP
uni.navigateTo({
url: '/pages/users/login/index'
})
return
// #endif
// #ifdef H5
// path = location.href;
path = location.pathname + location.search;
// #endif
if(!pathLogin){
pathLogin = '/page/users/login/index'
Cache.set('login_back_url',path);
}
if (['pages/user/index','/pages/user/index'].indexOf(login_back_url) == -1) {
// #ifdef H5
if (isWeixin()) {
let urlData = location.pathname + location.search
if (urlData.indexOf('?') !== -1) {
urlData += '&go_longin=1';
} else {
urlData += '?go_longin=1';
}
if (!Cache.has('snsapiKey')) {
auth.oAuth('snsapi_base', urlData);
} else {
uni.navigateTo({
url: '/pages/users/wechat_login/index'
})
}
} else {
uni.navigateTo({
url: '/pages/users/login/index'
})
}
// #endif
// #ifdef MP
uni.navigateTo({
url: '/pages/users/wechat_login/index'
})
// #endif
}
}
export function checkLogin()
{
let token = Cache.get(LOGIN_STATUS);
let expiresTime = Cache.get(EXPIRES_TIME);
let newTime = Math.round(new Date() / 1000);
if (expiresTime < newTime || !token){
Cache.clear(LOGIN_STATUS);
Cache.clear(EXPIRES_TIME);
Cache.clear(USER_INFO);
Cache.clear(STATE_R_KEY);
return false;
}else{
store.commit('UPDATE_LOGIN',token);
let userInfo = Cache.get(USER_INFO,true);
if(userInfo){
store.commit('UPDATE_USERINFO',userInfo);
}
return true;
}
}