trigger-user-save.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. const { ManagementClient } = require('authing-node-sdk')
  2. const managementClient = new ManagementClient({
  3. accessKeyId: '6686bffb373d06911e24a969',
  4. accessKeySecret: "4e978331675938d1bc81fb109e67d59a",
  5. host: 'https://textbook.u2-dev.hep.com.cn', // 应用的认证地址
  6. })
  7. export function defineUserAfterSave(){
  8. Parse.Cloud.afterSave("_User", async (request) => {
  9. // console.log("save _User",request?.object?.id)
  10. let query = new Parse.Query("Profile");
  11. query.equalTo("user",request?.object?.id)
  12. let profile = await query.first();
  13. syncUserProfileToAuthing(request?.object,profile)
  14. });
  15. Parse.Cloud.afterSave("Profile", async (request) => {
  16. // console.log("save Profile",request?.object?.id)
  17. let query = new Parse.Query("Profile");
  18. query.include("user");
  19. profile = await query.get(request?.object?.id);
  20. syncUserProfileToAuthing(profile.get("user"),profile)
  21. });
  22. }
  23. async function syncUserProfileToAuthing(user,profile){
  24. if(!user?.id) return
  25. let userInfo = user.toJSON();
  26. userInfo = fixJsonFileds(userInfo)
  27. if(profile?.id){
  28. let pjson = profile.toJSON();
  29. delete pjson.objectId;
  30. pjson= fixJsonFileds(pjson)
  31. Object.keys(pjson).forEach(key=>{
  32. userInfo[key] = pjson[key]
  33. })
  34. }
  35. // 映射对应字段
  36. userInfo.company = userInfo.companyName
  37. delete userInfo.companyName
  38. userInfo.userType = userInfo.identity
  39. delete userInfo.identity
  40. userInfo.userId = userInfo.objectId
  41. delete userInfo.objectId
  42. userInfo.identifyStatus = userInfo.accountState
  43. // 自定义数据全量同步
  44. userInfo.customData = JSON.parse(JSON.stringify(userInfo))
  45. // {
  46. // identifyStatus : userInfo.accountState
  47. // }
  48. // console.log(userInfo)
  49. // 同步数据至Authing用户池
  50. let result
  51. try{
  52. result = await managementClient.updateUser(userInfo)
  53. // console.log(result)
  54. }catch(err){console.log(err)}
  55. }
  56. function fixJsonFileds(json){
  57. // Parse独有关系数据
  58. delete json.ACL
  59. delete json.className
  60. delete json.sessionToken
  61. delete json.company
  62. delete json.user
  63. delete json.createdAt
  64. delete json.updatedAt
  65. // 来自Authing的数据
  66. delete json?.loginsCount
  67. delete json?.lastIP
  68. delete json?.lastLogin
  69. return json
  70. }