trigger-user-save.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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. console.log(userInfo)
  44. // 同步数据至Authing用户池
  45. let result
  46. try{
  47. result = await managementClient.updateUser(userInfo)
  48. console.log(result)
  49. }catch{err}
  50. }
  51. function fixJsonFileds(json){
  52. // Parse独有关系数据
  53. delete json.ACL
  54. delete json.className
  55. delete json.sessionToken
  56. delete json.company
  57. delete json.user
  58. delete json.createdAt
  59. delete json.updatedAt
  60. // 来自Authing的数据
  61. delete json?.loginsCount
  62. delete json?.lastIP
  63. delete json?.lastLogin
  64. return json
  65. }