fix: 登录前补齐空的 dcloud_appid,避免被判成用户不存在
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
/**
|
||||
* 登录前修复 dcloud_appid 为空数组的用户
|
||||
* uni-id 只放行「字段不存在」或「数组包含当前 appid」的账号,空数组会被当成用户不存在
|
||||
*/
|
||||
|
||||
const LOGIN_APP_IDS = ["__UNI__EB80D26", "__UNI__8BFD66E", "__UNI__0F0703D"];
|
||||
|
||||
function normalizeAccount(value) {
|
||||
if (typeof value === "number") return String(value).trim();
|
||||
if (typeof value === "string") return value.trim();
|
||||
return "";
|
||||
}
|
||||
|
||||
module.exports = [{
|
||||
id: "fixEmptyDcloudAppid",
|
||||
regExp: [
|
||||
"^user/pub/login(.*)"
|
||||
],
|
||||
description: "登录前把 dcloud_appid 为空数组的用户补上三个应用的 appid",
|
||||
index: 201,
|
||||
mode: "onActionExecuting",
|
||||
enable: true,
|
||||
main: async function(event) {
|
||||
let { data = {}, util } = event;
|
||||
let { db, _ } = util;
|
||||
const username = normalizeAccount(data.username);
|
||||
const mobile = normalizeAccount(data.mobile);
|
||||
const email = normalizeAccount(data.email);
|
||||
const whereList = [];
|
||||
if (username) {
|
||||
whereList.push({ username }, { mobile: username }, { email: username });
|
||||
}
|
||||
if (mobile && mobile !== username) whereList.push({ mobile });
|
||||
if (email && email !== username) whereList.push({ email });
|
||||
if (whereList.length === 0) return { code: 0 };
|
||||
|
||||
const whereJson = whereList.length === 1 ? whereList[0] : _.or(whereList);
|
||||
const userRes = await db.collection("uni-id-users").where(whereJson).field({
|
||||
dcloud_appid: true
|
||||
}).limit(10).get();
|
||||
const users = (userRes.data || []).filter(user => Array.isArray(user.dcloud_appid) && user.dcloud_appid.length === 0);
|
||||
for (let i = 0; i < users.length; i++) {
|
||||
await db.collection("uni-id-users").doc(users[i]._id).update({
|
||||
dcloud_appid: LOGIN_APP_IDS
|
||||
});
|
||||
}
|
||||
return { code: 0 };
|
||||
}
|
||||
}]
|
||||
Reference in New Issue
Block a user