109 lines
2.7 KiB
JavaScript
109 lines
2.7 KiB
JavaScript
import { oauthToken, checkUserPhone } from "@/request/api/LoginApi";
|
|
import { authLogin, refreshAuthLogin, checkRefreshToken } from "@/manager/LoginManager";
|
|
import { clientId } from "@/constant/base";
|
|
import { getAccessToken, removeAccessToken, setAccessToken } from "../constant/token";
|
|
import { NOTICE_EVENT_LOGIN_SUCCESS } from "@/constant/constant";
|
|
|
|
// 跳转登录
|
|
export const goLogin = () => uni.navigateTo({ url: "/pages/login/index" });
|
|
|
|
// 登录成功后,返回上一页
|
|
export const goBack = () => uni.navigateBack({ delta: 1 });
|
|
|
|
// 检测token
|
|
export const checkToken = () => {
|
|
const token = getAccessToken();
|
|
return new Promise((resolve) => {
|
|
if (!token) {
|
|
goLogin();
|
|
return;
|
|
}
|
|
resolve();
|
|
});
|
|
};
|
|
|
|
// 登录逻辑
|
|
export const onLogin = async (e) => {
|
|
console.info("onLogin code: ", e);
|
|
|
|
return new Promise(async (resolve, reject) => {
|
|
// 判断用户拒绝
|
|
if (e !== undefined && e && e.detail && e.detail.errno === 104) {
|
|
reject();
|
|
return;
|
|
}
|
|
|
|
await authLogin(e).then(async () => {
|
|
console.log("authLogin resolve success");
|
|
// 检查手机号是否绑定
|
|
const checkRes = await checkUserPhone();
|
|
if (checkRes.data) {
|
|
resolve();
|
|
return;
|
|
}
|
|
|
|
if (e === undefined) {
|
|
resolve();
|
|
return;
|
|
}
|
|
|
|
const { code } = e.detail;
|
|
|
|
// 绑定手机号
|
|
const params = { wechatPhoneCode: code, clientId: clientId };
|
|
const res = await bindUserPhone(params);
|
|
if (res.data) {
|
|
// 登录成功后,触发登录成功事件
|
|
uni.$emit(NOTICE_EVENT_LOGIN_SUCCESS);
|
|
resolve();
|
|
} else {
|
|
console.log("绑定手机号失败");
|
|
removeAccessToken();
|
|
reject();
|
|
}
|
|
});
|
|
});
|
|
};
|
|
|
|
/// 检查手机号登录
|
|
export const onCheckPhoneLogin = async () => {
|
|
return new Promise(async (resolve) => {
|
|
await refreshAuthLogin().then(async () => {
|
|
// 刷新成功后,检查手机号是否绑定
|
|
const access_token = getAccessToken();
|
|
const checkRes = await checkUserPhone({
|
|
token: access_token,
|
|
});
|
|
|
|
if (checkRes.data) {
|
|
// 登录成功后,触发登录成功事件
|
|
uni.$emit(NOTICE_EVENT_LOGIN_SUCCESS);
|
|
resolve(false);
|
|
} else {
|
|
resolve(true);
|
|
}
|
|
});
|
|
});
|
|
};
|
|
|
|
/// apple登录
|
|
export const onAppleLogin = async (e) => {
|
|
return new Promise(async (resolve) => {
|
|
await refreshAuthLogin()
|
|
.then(() => {
|
|
// 登录成功后,触发登录成功事件
|
|
uni.$emit(NOTICE_EVENT_LOGIN_SUCCESS);
|
|
resolve(true);
|
|
})
|
|
.catch(() => {
|
|
resolve(false);
|
|
});
|
|
});
|
|
}
|
|
|
|
|
|
/// 刷新 token
|
|
export const refreshToken = async () => {
|
|
await checkRefreshToken()
|
|
};
|