|
@@ -1,14 +1,15 @@
|
|
|
const { AuthenticationClient } = require('authing-js-sdk')
|
|
|
import { pgClient } from '../../db/pg-instance'
|
|
|
+// const { pgClient } = require('../../db/pg-instance')
|
|
|
|
|
|
export function defineAuthingLogin(){
|
|
|
Parse.Cloud.define("authingLogin", async (request) => {
|
|
|
let token = request.params.token;
|
|
|
if(token) {
|
|
|
- let result = await syncSessionWithIdToken(token)
|
|
|
- return result
|
|
|
+ let result = await syncSessionWithIdToken(token);
|
|
|
+ return result;
|
|
|
}
|
|
|
- return null
|
|
|
+ return null;
|
|
|
},{
|
|
|
fields : {
|
|
|
token:{
|
|
@@ -39,8 +40,10 @@ async function syncSessionWithIdToken(token){
|
|
|
// console.log(user)
|
|
|
|
|
|
// 生成Parse库所需_Session记录 objectId唯一
|
|
|
- let sessionObjectId = generateObjectId(user?.id+user?.token)
|
|
|
- let username = user?.phone || user?.username || user?.email
|
|
|
+ let sessionObjectId = generateObjectId(user?.id+user?.token);
|
|
|
+ let username = user?.username || user?.phone || user?.email
|
|
|
+ let ParseExistUser = await getParseUserByAuthingUser(user);
|
|
|
+ let userId = ParseExistUser?.objectId || user?.id
|
|
|
let syncSessionSQL = `
|
|
|
INSERT INTO "_User" (
|
|
|
"objectId", "username","mobile","phone", "createdAt", "updatedAt",
|
|
@@ -74,7 +77,7 @@ async function syncSessionWithIdToken(token){
|
|
|
`
|
|
|
let params = [
|
|
|
// 1-4
|
|
|
- sessionObjectId,user?.id,user?.token,user?.tokenExpiredAt,
|
|
|
+ sessionObjectId,userId,user?.token,user?.tokenExpiredAt,
|
|
|
// 5-8
|
|
|
new Date(),new Date(),username,user?.phone,
|
|
|
// 9-12
|
|
@@ -83,7 +86,7 @@ async function syncSessionWithIdToken(token){
|
|
|
if(user?.id&&user?.token){
|
|
|
try {
|
|
|
// 查询:数据库版本信息
|
|
|
- const data = await pgClient().any(syncSessionSQL,params);
|
|
|
+ let data = await pgClient().any(syncSessionSQL,params);
|
|
|
// console.log(data)
|
|
|
return {
|
|
|
sid:sessionObjectId,
|
|
@@ -98,6 +101,37 @@ async function syncSessionWithIdToken(token){
|
|
|
}
|
|
|
module.exports.syncSessionWithIdToken = syncSessionWithIdToken
|
|
|
|
|
|
+
|
|
|
+async function getParseUserByAuthingUser(user){
|
|
|
+ let sql = `
|
|
|
+ SELECT * FROM "_User" WHERE
|
|
|
+ "objectId"=$1 OR
|
|
|
+ "objectId"=$2 OR
|
|
|
+ "username"=$3 OR
|
|
|
+ ("mobile" IS NOT NULL AND "mobile" = $4) OR
|
|
|
+ ("phone" IS NOT NULL AND "phone" = $4) OR
|
|
|
+ ("mobile" IS NOT NULL AND "mobile" = $5) OR
|
|
|
+ ("phone" IS NOT NULL AND "phone" = $5) OR
|
|
|
+ ("email" IS NOT NULL AND "email" = $6)
|
|
|
+ `
|
|
|
+ let params = [
|
|
|
+ user?.id,
|
|
|
+ user?.externalId,
|
|
|
+ user?.username,
|
|
|
+ uesr?.phone,
|
|
|
+ uesr?.mobile,
|
|
|
+ ]
|
|
|
+ let data = []
|
|
|
+ try{
|
|
|
+ data = await pgClient().any(sql,params);
|
|
|
+ if(data?.length){
|
|
|
+ return data[0]
|
|
|
+ }
|
|
|
+ }catch(err){}
|
|
|
+ return null
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
const crypto = require('crypto');
|
|
|
function generateObjectId(inputString) {
|
|
|
const hash = crypto.createHash('sha256').update(inputString).digest('hex');
|