diff --git a/common/appInit.js b/common/appInit.js
index ba474e96926652ae041d12496e42de629caa2b5f..7a387b64b62cdc8e106f50c0ffa7bf9524718f99 100644
--- a/common/appInit.js
+++ b/common/appInit.js
@@ -5,7 +5,7 @@ export default function (){
initAppVersion();
// 检查更新
- checkUpdate();
+ // checkUpdate();
}
/**
diff --git a/js_sdk/request.js b/js_sdk/request.js
new file mode 100644
index 0000000000000000000000000000000000000000..b116d348bff5d42423876945a065e66a5ad9d1c2
--- /dev/null
+++ b/js_sdk/request.js
@@ -0,0 +1,36 @@
+/*
+1.优雅访问指定路由地址
+2.load自动显示与关闭
+3.统一路由拦截
+ 3.1 读取云端接口权限配置,先验证本地token再访问
+ 3.2 处理因token过期等问题自动更新本地token,或token无效跳转至登陆页面
+*/
+const debug = true;//开启后,会alert错误信息
+export default function request(name,params,callback,{showLoading=false,loadText='',fail=()=>{}}={}){
+ console.log('request');
+ showLoading||loadText? uni.showLoading({title:loadText}):'';
+
+ let routers = name.split('/');
+ var action = false
+ if (routers.length>1){
+ name = routers[0]
+ action = routers[1]
+ }
+ console.log({name,data: {action,params}})
+ return uniCloud.callFunction({name,data: {action,params},
+ success(e){
+ console.log(e);
+ if(showLoading || loadText) uni.hideLoading()
+ const res = e.result
+ if (res.code === 0 ) {
+ return callback(res.data, e.result, e)
+ }
+ debug? uni.showModal({content: JSON.stringify(e)}) :'';
+ },
+ fail(err){
+ console.log(err);
+ debug? uni.showModal({content: JSON.stringify(err)}) :'';
+ fail(err)
+ }
+ })
+}
\ No newline at end of file
diff --git a/main.js b/main.js
index f9717dbe4b112f686b2d11775c84565cd5f70084..62c414c3d2b6dcd35524999f7a46eb36f8268e11 100644
--- a/main.js
+++ b/main.js
@@ -2,7 +2,10 @@ import Vue from 'vue'
import App from './App'
import store from './store/index.js';
+import request from './js_sdk/request.js';
+
Vue.config.productionTip = false
+Vue.prototype.request = request
App.mpType = 'app'
diff --git a/pages.json b/pages.json
index cd83996aac72501ae3ef92ec9e580e713d7cb13c..3e7a9ed0c40f9d0c28c082bed15853598b4e9810 100644
--- a/pages.json
+++ b/pages.json
@@ -191,7 +191,16 @@
}
}
- ],
+ ,{
+ "path" : "pages/test/test",
+ "style" :
+ {
+ "navigationBarTitleText": "",
+ "enablePullDownRefresh": false
+ }
+
+ }
+ ],
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "base-app",
@@ -199,10 +208,15 @@
"backgroundColor": "#F8F8F8"
},
"condition": {
- "list": [{
- "path": "uni_modules/opendb-feedback/pages/opendb-feedback/list"
- }],
- "current": 0
+ "list": [
+ {
+ "path": "uni_modules/uni-login-page/pages/index/index"
+ },
+ {
+ "path": "pages/test/test"
+ }
+ ],
+ "current":0
},
"tabBar": {
"color": "#7A7E83",
diff --git a/pages/list/list.vue b/pages/list/list.vue
index 128014d986f73a31193f77d74255ddf8d86204d4..b5e12ab80c9b95af67d0f8bec120d7d174f1a2a6 100644
--- a/pages/list/list.vue
+++ b/pages/list/list.vue
@@ -16,7 +16,7 @@
searchText: '',
canSearch:true
};
- },
+ },
onShow(options) {
this.searchText = getApp().globalData.searchText;
},
diff --git a/pages/test/test.vue b/pages/test/test.vue
new file mode 100644
index 0000000000000000000000000000000000000000..cfa6b77d7023ebaf8489f24e64c1bbed24cc26aa
--- /dev/null
+++ b/pages/test/test.vue
@@ -0,0 +1,27 @@
+
+
+ test
+
+
+
+
+
+
diff --git a/uniCloud-aliyun/database/uni-id-users.schema.json b/uniCloud-aliyun/database/uni-id-users.schema.json
index cec2f1af52c4c2c581e4417eabbb646d0eef03ae..62f14887cc775ee066677d4de728957c0e562559 100644
--- a/uniCloud-aliyun/database/uni-id-users.schema.json
+++ b/uniCloud-aliyun/database/uni-id-users.schema.json
@@ -1,7 +1,7 @@
{
"bsonType": "object",
"permission": {
- "read": true,
+ "read": "'read' in auth.permission",
"create": false,
"update": "doc._id == auth.uid",
"delete": false
diff --git a/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/package-lock.json b/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/package-lock.json
index c62cf3beda4f0465443af08ac5df57028a2fedd1..dc8ec957524be78035e54bb52d976325bb5d4bc8 100644
--- a/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/package-lock.json
+++ b/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/package-lock.json
@@ -1,11 +1,28 @@
{
- "name": "uni-id",
- "version": "3.0.8",
- "lockfileVersion": 1,
- "requires": true,
- "dependencies": {
- "uni-config-center": {
- "version": "file:../../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center"
- }
+ "name": "uni-id",
+ "version": "3.0.8",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "": {
+ "version": "3.0.8",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "uni-config-center": "file:../../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center"
+ }
+ },
+ "../../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center": {
+ "version": "0.0.1",
+ "license": "Apache-2.0"
+ },
+ "node_modules/uni-config-center": {
+ "resolved": "../../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center",
+ "link": true
}
+ },
+ "dependencies": {
+ "uni-config-center": {
+ "version": "file:../../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center"
+ }
+ }
}
diff --git a/uni_modules/uni-quick-login/components/uni-quick-login/uni-quick-login.vue b/uni_modules/uni-quick-login/components/uni-quick-login/uni-quick-login.vue
index 8244191cc7edbbe3c8ffaa0e339faf79c0b60594..eebaf2945683d5cd3728278ad707753c9212a53f 100644
--- a/uni_modules/uni-quick-login/components/uni-quick-login/uni-quick-login.vue
+++ b/uni_modules/uni-quick-login/components/uni-quick-login/uni-quick-login.vue
@@ -97,7 +97,7 @@
login(type) {
let oauthService = this.oauthServices.find((service) => service.id == type)
// #ifdef APP-PLUS
- uni.showLoading({mask: true});
+ //uni.showLoading({mask: true});
//请勿直接使用前端获取的unionid或openid直接用于登陆,前端的数据都是不可靠的
if(type=='weixin'){
@@ -131,46 +131,25 @@
})
// #endif
},
- quickLogin(params,type){
- console.log({params,type});
- uniCloud.callFunction({//联网验证登陆
- "name": "user-center",
- "data": {
- "action": "login_by_"+type,
- params
- },
- success:async (e) => {
- uni.hideLoading()
- console.log(e.result);
- // uni.showModal({
- // content: JSON.stringify(e.result),
- // showCancel: false
- // });
- if(e.result.code === 0){
- uni.setStorageSync('uni_id_uid', e.result.uid)
- uni.setStorageSync('uni_id_token', e.result.token)
- uni.setStorageSync('uni_id_token_expired', e.result.tokenExpired)
- // console.log('66666=',e.result.uid,e.result.token,e.result.tokenExpired);
- delete e.result.userInfo.token
- this.setUserInfo(e.result.userInfo)
- if(type=='univerify'){
- uni.closeAuthView()
- }
- uni.showToast({
- title: '登陆成功',
- icon: 'none'
- });
- uni.navigateBack()
+ quickLogin(params,type){//联网验证登陆
+ console.log(params,type);
+ this.request('user-center/login_by_'+type,params,(data,result)=>{
+ console.log(result);
+ if(result.code === 0){
+ uni.setStorageSync('uni_id_uid', result.uid)
+ uni.setStorageSync('uni_id_token', result.token)
+ uni.setStorageSync('uni_id_token_expired', result.tokenExpired)
+
+ delete result.userInfo.token
+ this.setUserInfo(result.userInfo)
+ if(type=='univerify'){
+ uni.closeAuthView()
}
- },
- fail: (err) => {
- console.log(err);
- if(err.errCode===30002){
-
- }
- },
- complete: () => {
- uni.hideLoading()
+ uni.showToast({
+ title: '登陆成功',
+ icon: 'none'
+ });
+ uni.navigateBack()
}
})
},
diff --git a/uni_modules/uni-quick-login/uniCloud/cloudfunctions/user-center/package-lock.json b/uni_modules/uni-quick-login/uniCloud/cloudfunctions/user-center/package-lock.json
index 6630381f378b01c73f31b005fb65621b9e9ac2a1..83fbc05449f816d32acb4c505bf00fd934bf0c14 100644
--- a/uni_modules/uni-quick-login/uniCloud/cloudfunctions/user-center/package-lock.json
+++ b/uni_modules/uni-quick-login/uniCloud/cloudfunctions/user-center/package-lock.json
@@ -1,25 +1,5 @@
{
- "name": "user-center",
- "version": "1.0.0",
- "lockfileVersion": 1,
- "requires": true,
- "dependencies": {
- "uni-captcha": {
- "version": "file:../../../../uni-captcha/uniCloud/cloudfunctions/common/uni-captcha"
- },
- "uni-config-center": {
- "version": "file:../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center"
- },
- "uni-id": {
- "version": "file:../../../../uni-id/uniCloud/cloudfunctions/common/uni-id",
- "requires": {
- "uni-config-center": "file:../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center"
- },
- "dependencies": {
- "uni-config-center": {
- "version": "file:../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center"
- }
- }
- }
- }
+ "name": "user-center",
+ "version": "1.0.0",
+ "lockfileVersion": 1
}
diff --git a/uni_modules/uni-quick-login/uniCloud/cloudfunctions/user/index.js b/uni_modules/uni-quick-login/uniCloud/cloudfunctions/user/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..f52b2416b5a418af55ccd4a4ffe9eee4e6637cc8
--- /dev/null
+++ b/uni_modules/uni-quick-login/uniCloud/cloudfunctions/user/index.js
@@ -0,0 +1,82 @@
+'use strict';
+const uniID = require('uni-id')
+const uniCaptcha = require('uni-captcha')
+const db = uniCloud.database()
+const dbCmd = db.command
+let params,context,res;
+class User {
+ async quickLogin(){
+ let {access_token,openid,type} = params
+ switch (type){
+ case 'weixin':
+ let userinfo_res = await uniCloud.httpclient.request('https://api.weixin.qq.com/sns/userinfo',
+ {
+ method: 'GET',
+ dataType:"json",
+ data:{ access_token,openid}
+ });
+ return userinfo_res.data//根据access_token,openid得到userinfo
+ //检查是否已经注册...
+ break;
+ case 'univerify':
+ return uniID.loginByUniverify({access_token,openid})
+ break;
+ case 'apple':
+ return await uniID.loginByApple(params)
+ break;
+ default:
+ return {"code":100,"msg":"暂不提供"+type+"登陆的云端接口演示"}
+ break;
+ }
+ }
+ async sendSmsCode(){
+ // 简单限制一下客户端调用频率
+ const ipLimit = await db.collection('uni-verify').where({
+ ip: context.CLIENTIP,
+ created_at: dbCmd.gt(Date.now() - 60000)
+ }).get()
+ if (ipLimit.data.length > 0) {
+ return {
+ code: 429,
+ msg: '请求过于频繁'
+ }
+ }
+ const templateId = '11753' // 替换为自己申请的模板id
+ if (!templateId) {
+ return {
+ code: 500,
+ msg: 'sendSmsCode需要传入自己的templateId,参考https://uniapp.dcloud.net.cn/uniCloud/uni-id?id=sendsmscode'
+ }
+ }
+ const randomStr = '00000' + Math.floor(Math.random() * 1000000)
+ const code = randomStr.substring(randomStr.length - 6)
+ return await uniID.sendSmsCode({
+ mobile: params.mobile,
+ code,
+ type: params.type,
+ templateId
+ })
+ }
+}
+const userClass = new User();
+exports.main = async (event, ctx) => {
+ [{params},context] = [event,ctx]
+ //1.判断需要token的action是否有token
+ /*let noCheckAction = ['register', 'loginByWeixin', 'checkToken','login', 'logout', 'sendSmsCode','loginBySms', 'inviteLogin', 'loginByUniverify','loginByApple', 'createCaptcha', 'verifyCaptcha','refreshCaptcha']
+ if(!noCheckAction.includes(event.action)) {
+ if (!event.uniIdToken) {
+ return {"code":403,"msg":"缺少token"}
+ }
+ let payload = {}
+ payload = await uniID.checkToken(event.uniIdToken)
+ if (payload.code && payload.code > 0) {
+ return payload
+ }
+ params.uid = payload.uid
+ }*/
+ try{
+ return await userClass[event.action]()||res;
+ }catch(err){
+ return {"code":404,"msg":err}
+ }
+}
\ No newline at end of file
diff --git a/uni_modules/uni-quick-login/uniCloud/cloudfunctions/user/package-lock.json b/uni_modules/uni-quick-login/uniCloud/cloudfunctions/user/package-lock.json
new file mode 100644
index 0000000000000000000000000000000000000000..7e3037fa82ddad8ccaa8db9579840018c4cfb720
--- /dev/null
+++ b/uni_modules/uni-quick-login/uniCloud/cloudfunctions/user/package-lock.json
@@ -0,0 +1,58 @@
+{
+ "name": "user",
+ "version": "1.0.0",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "": {
+ "version": "1.0.0",
+ "license": "ISC",
+ "dependencies": {
+ "uni-captcha": "file:../../../../uni-captcha/uniCloud/cloudfunctions/common/uni-captcha",
+ "uni-config-center": "file:../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center",
+ "uni-id": "file:../../../../uni-id/uniCloud/cloudfunctions/common/uni-id"
+ }
+ },
+ "../../../../uni-captcha/uniCloud/cloudfunctions/common/uni-captcha": {
+ "version": "0.1.0",
+ "license": "Apache-2.0"
+ },
+ "../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center": {
+ "version": "0.0.1",
+ "license": "Apache-2.0"
+ },
+ "../../../../uni-id/uniCloud/cloudfunctions/common/uni-id": {
+ "version": "3.0.8",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "uni-config-center": "file:../../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center"
+ }
+ },
+ "node_modules/uni-captcha": {
+ "resolved": "../../../../uni-captcha/uniCloud/cloudfunctions/common/uni-captcha",
+ "link": true
+ },
+ "node_modules/uni-config-center": {
+ "resolved": "../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center",
+ "link": true
+ },
+ "node_modules/uni-id": {
+ "resolved": "../../../../uni-id/uniCloud/cloudfunctions/common/uni-id",
+ "link": true
+ }
+ },
+ "dependencies": {
+ "uni-captcha": {
+ "version": "file:../../../../uni-captcha/uniCloud/cloudfunctions/common/uni-captcha"
+ },
+ "uni-config-center": {
+ "version": "file:../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center"
+ },
+ "uni-id": {
+ "version": "file:../../../../uni-id/uniCloud/cloudfunctions/common/uni-id",
+ "requires": {
+ "uni-config-center": "file:../../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center"
+ }
+ }
+ }
+}
diff --git a/uni_modules/uni-quick-login/uniCloud/cloudfunctions/user/package.json b/uni_modules/uni-quick-login/uniCloud/cloudfunctions/user/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..965bf274cb22107b31b692a78c0e33eaee48e095
--- /dev/null
+++ b/uni_modules/uni-quick-login/uniCloud/cloudfunctions/user/package.json
@@ -0,0 +1,16 @@
+{
+ "name": "user",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "author": "",
+ "license": "ISC",
+ "dependencies": {
+ "uni-captcha": "file:../../../../uni-captcha/uniCloud/cloudfunctions/common/uni-captcha",
+ "uni-config-center": "file:../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center",
+ "uni-id": "file:../../../../uni-id/uniCloud/cloudfunctions/common/uni-id"
+ }
+}
diff --git a/uni_modules/uni-quick-login/uniCloud/cloudfunctions/user/user.param.json b/uni_modules/uni-quick-login/uniCloud/cloudfunctions/user/user.param.json
new file mode 100644
index 0000000000000000000000000000000000000000..f0ec7f1310f9e40c0fcd8e1ea8297d311e08d999
--- /dev/null
+++ b/uni_modules/uni-quick-login/uniCloud/cloudfunctions/user/user.param.json
@@ -0,0 +1,8 @@
+// 本文件中的json内容将在云函数【运行】时作为参数传给云函数。
+// 配置教程参考:https://uniapp.dcloud.net.cn/uniCloud/quickstart?id=runparam
+{
+ "action": "sendSmsCode",
+ "params": {
+ "phone":"17769516081"
+ }
+}