react-app-shell
Version:
react打包脚本和example, 这里的版本请忽略
162 lines (129 loc) • 3.67 kB
JavaScript
import store from 'store';
import jsCookies from 'js-cookie';
window.tstore = store;
import appConfig from '../config/app-config';
/**
* 设置本地数据, localStorage
* @param key
* @param value
*/
export const set = (key, value) => {
store.set(key, value);
};
/**
* 获取本地数据
* @param key
*/
export const get = (key) => {
return store.get(key);
};
/**
* 移除本地数据
* @param key
*/
export const remove = (key) => {
store.remove(key);
};
/**
* 设置登录token, 兼容老系统
* @param userId 用户id
* @param token 登录token
*/
export const setToken = (userId, token) => {
const {userIdKey, userTokenKey, expiresDays, domain} = appConfig.cookie;
store.set(userIdKey, userId);
store.set(userTokenKey, token);
jsCookies.set(userIdKey, userId, {
expires: expiresDays,
domain
});
jsCookies.set(userTokenKey, token, {
expires: expiresDays,
domain
});
};
/**
* 获取登录token
*/
export const getToken = () => {
const {userIdKey, userTokenKey, expiresDays, domain} = appConfig.cookie;
const userId = store.get(userIdKey);
const userStoreToken = store.get(userTokenKey);
const userCookieToken = jsCookies.get(userTokenKey);
// 取用户登录token
const userToken = userStoreToken || userCookieToken;
// store里没有 则重写一次
if (userToken && !userStoreToken) {
store.set(userIdKey, userId);
store.set(userTokenKey, userToken);
}
// cookie里没有 则重写一次
if (userToken && !userCookieToken) {
jsCookies.set(userIdKey, userId, {
expires: expiresDays,
domain
});
jsCookies.set(userTokenKey, userToken, {
expires: expiresDays,
domain
});
}
return userToken;
};
/**
* 获取当前登录用户的userId
*/
export const getUserId = () => {
const {userIdKey, expiresDays, domain} = appConfig.cookie;
const storeUserId = store.get(userIdKey);
const cookieUserId = jsCookies.get(userIdKey);
const userId = storeUserId || cookieUserId;
// store里没有 则重写一次
if (userId && !storeUserId) {
store.set(userIdKey, userId);
}
// cookie里没有 则重写一次
if (userId && !cookieUserId) {
jsCookies.set(userIdKey, userId, {
expires: expiresDays,
domain
});
}
return userId;
};
/**
* 获取微信公众号的token
* PS: 根据微信公众号内的url里的参数code, 换取的微信公众号的Token
*/
export const getWechatToken = () => {
const {wechatTokenKey, expiresDays, domain} = appConfig.cookie;
const storeToken = store.get(wechatTokenKey);
const cookieToken = jsCookies.get(wechatTokenKey);
// 微信公众号token
const wechatToken = storeToken || cookieToken;
// store里没有 则重写一次
if (wechatToken && !storeToken) {
store.set(wechatTokenKey, wechatToken);
}
// cookie里没有 则重写一次
if (wechatToken && !cookieToken) {
// 当cookie里不存在时, 重写一次
jsCookies.set(wechatTokenKey, wechatToken, {
expires: expiresDays,
domain
});
}
return wechatToken;
};
/**
* 清空用户token登录状态token
*/
export const clearToken = () => {
const {userIdKey, userTokenKey, domain} = appConfig.cookie;
store.remove(userIdKey);
store.remove(userTokenKey);
jsCookies.remove(userIdKey);
jsCookies.remove(userTokenKey);
jsCookies.remove(userIdKey, {domain});
jsCookies.remove(userTokenKey, {domain});
};