@chenminai/cloud-shared 1.0.6 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/auth.js +18 -8
- package/package.json +2 -1
- package/storage.js +2 -8
package/auth.js
CHANGED
|
@@ -1,34 +1,44 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 云函数用户身份解析工具
|
|
3
3
|
*
|
|
4
|
-
* 统一处理小程序(openid → cbAuthUid)和 Web
|
|
4
|
+
* 统一处理小程序(openid → cbAuthUid)和 Web (_cbAuthUid)两种调用方式。
|
|
5
5
|
* 在每个需要用户身份的云函数中 require 此模块,避免重复代码。
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
const cloud = require('wx-server-sdk')
|
|
9
|
+
|
|
10
|
+
cloud.init({
|
|
11
|
+
env: cloud.DYNAMIC_CURRENT_ENV
|
|
12
|
+
})
|
|
13
|
+
|
|
9
14
|
const db = cloud.database()
|
|
10
15
|
|
|
11
16
|
/**
|
|
12
|
-
* 解析调用方的 cbAuthUid
|
|
13
|
-
*
|
|
14
|
-
*
|
|
17
|
+
* 解析调用方的 cbAuthUid,优先级从高到低:
|
|
18
|
+
*
|
|
19
|
+
* 1. params._cbAuthUid —— callFunctionWithAuth() 自动注入,新版小程序和 Web BFF 均走此路径,无需查库。
|
|
20
|
+
* 2. wxContext.OPENID —— 降级路径:未注入 _cbAuthUid 时,
|
|
21
|
+
* 通过微信服务端可信的 OPENID 查库取得 cbAuthUid。
|
|
15
22
|
*
|
|
16
23
|
* @param {object} wxContext cloud.getWXContext() 的返回值
|
|
17
24
|
* @param {object} params event 解析后的参数对象
|
|
18
25
|
* @returns {Promise<string|null>} cbAuthUid,或 null(无法识别身份)
|
|
19
26
|
*/
|
|
20
27
|
async function resolveUserId(wxContext, params) {
|
|
28
|
+
// 优先使用注入字段,避免数据库查询
|
|
29
|
+
if (params._cbAuthUid) return params._cbAuthUid
|
|
30
|
+
|
|
31
|
+
// 降级:通过 OPENID 查库
|
|
21
32
|
if (wxContext.OPENID) {
|
|
22
33
|
const result = await db.collection('users')
|
|
23
34
|
.where({ openid: wxContext.OPENID })
|
|
24
35
|
.field({ cbAuthUid: true })
|
|
25
36
|
.limit(1)
|
|
26
37
|
.get()
|
|
27
|
-
|
|
28
|
-
return cbAuthUid ?? null
|
|
38
|
+
return result.data[0]?.cbAuthUid ?? null
|
|
29
39
|
}
|
|
30
|
-
|
|
31
|
-
return
|
|
40
|
+
|
|
41
|
+
return null
|
|
32
42
|
}
|
|
33
43
|
|
|
34
44
|
module.exports = { resolveUserId }
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chenminai/cloud-shared",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.8",
|
|
4
4
|
"description": "云函数共享工具:用户身份解析等",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
|
+
"wx-server-sdk": "~2.6.3",
|
|
10
11
|
"@cloudbase/node-sdk": "^3.18.1"
|
|
11
12
|
}
|
|
12
13
|
}
|
package/storage.js
CHANGED
|
@@ -2,13 +2,7 @@ const tcb = require('@cloudbase/node-sdk')
|
|
|
2
2
|
|
|
3
3
|
const CUSTOM_DOMAIN = process.env.STORAGE_CUSTOM_DOMAIN || ''
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
function getApp() {
|
|
7
|
-
if (!_app) {
|
|
8
|
-
_app = tcb.init({ env: tcb.SYMBOL_CURRENT_ENV })
|
|
9
|
-
}
|
|
10
|
-
return _app
|
|
11
|
-
}
|
|
5
|
+
const tcbApp = tcb.init({ env: tcb.SYMBOL_CURRENT_ENV })
|
|
12
6
|
|
|
13
7
|
/**
|
|
14
8
|
* 将 cloud:// fileID 列表批量转为 HTTP 链接。
|
|
@@ -21,7 +15,7 @@ async function resolveCloudUrls(fileIds) {
|
|
|
21
15
|
const cloudIds = fileIds.filter((id) => id.startsWith('cloud://'))
|
|
22
16
|
if (!cloudIds.length) return new Map()
|
|
23
17
|
|
|
24
|
-
const result = await
|
|
18
|
+
const result = await tcbApp.getTempFileURL({ fileList: cloudIds })
|
|
25
19
|
const map = new Map();
|
|
26
20
|
(result.fileList || []).forEach((item) => {
|
|
27
21
|
if (item.code === 'SUCCESS') {
|