const WXAPI = require('apifm-wxapi')
const CONFIG = require('../config.js')
async function checkSession(){
return new Promise((resolve, reject) => {
wx.checkSession({
success() {
return resolve(true)
},
fail() {
return resolve(false)
}
})
})
}
async function bindSeller() {
const token = wx.getStorageSync('token')
const referrer = wx.getStorageSync('referrer')
if (!token) {
return
}
if (!referrer) {
return
}
const res = await WXAPI.bindSeller({
token,
uid: referrer
})
}
async function checkHasLogined() {
const token = wx.getStorageSync('token')
if (!token) {
return false
}
const loggined = await checkSession()
if (!loggined) {
wx.removeStorageSync('token')
return false
}
const checkTokenRes = await WXAPI.checkToken(token)
if (checkTokenRes.code != 0) {
wx.removeStorageSync('token')
return false
}
return true
}
async function wxaCode(){
return new Promise((resolve, reject) => {
wx.login({
success(res) {
return resolve(res.code)
},
fail() {
wx.showToast({
title: '获取code失败',
icon: 'none'
})
return resolve('获取code失败')
}
})
})
}
async function login(page){
const _this = this
wx.login({
success: function (res) {
const extConfigSync = wx.getExtConfigSync()
if (extConfigSync.subDomain) {
WXAPI.wxappServiceLogin({
code: res.code
}).then(function (res) {
if (res.code == 10000) {
return;
}
if (res.code != 0) {
wx.showModal({
title: '无法登录',
content: res.msg,
showCancel: false
})
return;
}
wx.setStorageSync('token', res.data.token)
wx.setStorageSync('uid', res.data.uid)
if (CONFIG.bindSeller) {
_this.bindSeller()
}
if ( page ) {
page.onShow()
}
})
} else {
WXAPI.login_wx(res.code).then(function (res) {
if (res.code == 10000) {
return;
}
if (res.code != 0) {
wx.showModal({
title: '无法登录',
content: res.msg,
showCancel: false
})
return;
}
wx.setStorageSync('token', res.data.token)
wx.setStorageSync('uid', res.data.uid)
if (CONFIG.bindSeller) {
_this.bindSeller()
}
if ( page ) {
page.onShow()
}
})
}
}
})
}
async function authorize() {
return new Promise((resolve, reject) => {
wx.login({
success: function (res) {
const code = res.code
let referrer = ''
let referrer_storge = wx.getStorageSync('referrer');
if (referrer_storge) {
referrer = referrer_storge;
}
const extConfigSync = wx.getExtConfigSync()
if (extConfigSync.subDomain) {
WXAPI.wxappServiceAuthorize({
code: code,
referrer: referrer
}).then(function (res) {
if (res.code == 0) {
wx.setStorageSync('token', res.data.token)
wx.setStorageSync('uid', res.data.uid)
resolve(res)
} else {
wx.showToast({
title: res.msg,
icon: 'none'
})
reject(res.msg)
}
})
} else {
WXAPI.authorize({
code: code,
referrer: referrer
}).then(function (res) {
if (res.code == 0) {
wx.setStorageSync('token', res.data.token)
wx.setStorageSync('uid', res.data.uid)
resolve(res)
} else {
wx.showToast({
title: res.msg,
icon: 'none'
})
reject(res.msg)
}
})
}
},
fail: err => {
reject(err)
}
})
})
}
function loginOut(){
wx.removeStorageSync('token')
wx.removeStorageSync('uid')
}
async function checkAndAuthorize (scope) {
return new Promise((resolve, reject) => {
wx.getSetting({
success(res) {
if (!res.authSetting[scope]) {
wx.authorize({
scope: scope,
success() {
resolve()
},
fail(e){
console.error(e)
wx.showModal({
title: '无权操作',
content: '需要获得您的授权',
showCancel: false,
confirmText: '立即授权',
confirmColor: '#e64340',
success(res) {
wx.openSetting();
},
fail(e){
console.error(e)
reject(e)
},
})
}
})
} else {
resolve()
}
},
fail(e){
console.error(e)
reject(e)
}
})
})
}
module.exports = {
checkHasLogined: checkHasLogined,
wxaCode: wxaCode,
login: login,
loginOut: loginOut,
checkAndAuthorize: checkAndAuthorize,
authorize: authorize,
bindSeller: bindSeller
}