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

12 months ago
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 });
}
12 months ago
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);
}
12 months ago
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
12 months ago
uni.navigateTo({
url: '/pages/users/wechat_login/index'
12 months ago
})
// #endif
}
12 months ago
}
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;
}
}