Quellcode durchsuchen

feat: identifyStatus sync with accountState

ryanemax vor 9 Monaten
Ursprung
Commit
a1c1800ce2
1 geänderte Dateien mit 31 neuen und 5 gelöschten Zeilen
  1. 31 5
      server/cloud/authing/trigger-user-save.js

+ 31 - 5
server/cloud/authing/trigger-user-save.js

@@ -1,7 +1,13 @@
+const { ManagementClient } = require('authing-node-sdk')
+const managementClient  = new ManagementClient({
+    accessKeyId: '6686bffb373d06911e24a969',
+    accessKeySecret: "4e978331675938d1bc81fb109e67d59a",
+    host: 'https://textbook.u2-dev.hep.com.cn', // 应用的认证地址
+})
 
 export function defineUserAfterSave(){
     Parse.Cloud.afterSave("_User", async (request) => {
-        console.log("save _User",request?.object?.id)
+        // console.log("save _User",request?.object?.id)
         let query = new Parse.Query("Profile");
         query.equalTo("user",request?.object?.id)
         let profile = await query.first();
@@ -9,20 +15,21 @@ export function defineUserAfterSave(){
     });
 
     Parse.Cloud.afterSave("Profile", async (request) => {
-        console.log("save Profile",request?.object?.id)
+        // console.log("save Profile",request?.object?.id)
         let query = new Parse.Query("Profile");
         query.include("user");
-        profile = await query.get(require?.object?.id);
+        profile = await query.get(request?.object?.id);
         syncUserProfileToAuthing(profile.get("user"),profile)
      
     });
 }
 
 
-function syncUserProfileToAuthing(){
+async function syncUserProfileToAuthing(user,profile){
+    if(!user?.id) return
     let userInfo = user.toJSON();
     userInfo = fixJsonFileds(userInfo)
-    if(profile){
+    if(profile?.id){
         let pjson = profile.toJSON();
         delete pjson.objectId;
         pjson= fixJsonFileds(pjson)
@@ -35,13 +42,32 @@ function syncUserProfileToAuthing(){
     delete userInfo.companyName
     userInfo.userType = userInfo.identity
     delete userInfo.identity
+    userInfo.userId = userInfo.objectId
+    delete userInfo.objectId
+    userInfo.identifyStatus = userInfo.accountState
+
     console.log(userInfo)
+    // 同步数据至Authing用户池
+    let result
+    try{
+        result = await managementClient.updateUser(userInfo)
+        console.log(result)
+    }catch{err}
+
 }
 
 function fixJsonFileds(json){
+    // Parse独有关系数据
     delete json.ACL
     delete json.className
     delete json.sessionToken
     delete json.company
+    delete json.user
+    delete json.createdAt
+    delete json.updatedAt
+    // 来自Authing的数据
+    delete json?.loginsCount
+    delete json?.lastIP
+    delete json?.lastLogin
     return json
 }