diff --git a/src/App.vue b/src/App.vue index a90338b..2d24a30 100644 --- a/src/App.vue +++ b/src/App.vue @@ -2,7 +2,7 @@ export default { onLaunch: function () { this.$store.dispatch("system/initConfig"); - this.$store.dispatch("user/token"); + this.$models.user.checkLogin(); }, onShow: function () {}, onHide: function () {}, diff --git a/src/core/models/user.js b/src/core/models/user.js index 246d1a8..a08383e 100644 --- a/src/core/models/user.js +++ b/src/core/models/user.js @@ -8,7 +8,6 @@ export default { */ platformLogin() { return new Promise((resolve, reject) => { - // #ifndef H5 uni.login({ provider: "weixin", success(result) { @@ -22,7 +21,6 @@ export default { }); } }); - // #endif }); }, /** @@ -47,6 +45,46 @@ export default { }); }); }, + /** + * 检查登录状态 + */ + checkLogin() { + let token = uni.getStorageSync("user_access_token"); + if (token) { + $store.commit("user/token", token); + this.info().then(user => { + $store.commit('user/openId', user.openid); + }); + } else { + this.platformLogin().then((response) => { + $store.commit('user/openId', response.openid); + }); + } + }, + /** + * 获取信息 + */ + info() { + return new Promise((resolve, reject) => { + prototype.$request({ + api: 'user.info', + }).then(response => { + if (response.code == 1) { + let user = { + id: response.data.id, + nickname: response.data.user_nickname, + openid: response.data.openid, + mobile: response.data.mobile, + create_time: response.data.create_time, + }; + $store.commit('user/info', user); + return resolve(user); + } else { + return reject(response.msg); + } + }); + }); + }, /** * 用户注册 */ @@ -58,26 +96,30 @@ export default { if (user.password.length < 6 || user.password.length > 16) { return reject('密码在6至16位字符之间'); } - this.platformLogin().then(res => { - prototype.$request({ - api: 'user.register', - data: { - username: user.mobile, - password: user.password, - verification_code: verificationCode, - openid: res.openid, - types: 1, - } - }).then((response) => { - if (response.code == 1) { - return resolve(response); - } else { - return reject(response.msg); - } - }); + if (!user.openid) { + return reject('缺少OpenId,请重启应用'); + } + prototype.$request({ + api: 'user.register', + data: { + username: user.mobile, + password: user.password, + openid: user.openid, + verification_code: verificationCode, + types: 1, + } + }).then((response) => { + if (response.code == 1) { + return resolve(response); + } else { + return reject(response.msg); + } }); }); }, + /** + * 登录用户 + */ login(user) { return new Promise((resolve, reject) => { if (!prototype.$test.mobile(user.mobile)) { @@ -94,7 +136,8 @@ export default { } }).then(response => { if (response.code == 1) { - $store.dispatch('user/token', response.data.token); + uni.setStorageSync('user_access_token', response.data.token); + this.checkLogin(); return resolve(response); } else { return reject(response.msg); diff --git a/src/pages/auth/auth.vue b/src/pages/auth/auth.vue index 3be45e6..0748f8c 100644 --- a/src/pages/auth/auth.vue +++ b/src/pages/auth/auth.vue @@ -102,6 +102,7 @@