Files
datasquirel/package-shared/functions/api/social-login/facebookLogin.ts
T
2025-07-09 20:30:45 +01:00

92 lines
2.8 KiB
TypeScript

import { PostInsertReturn, UserType } from "../../../types";
import dbHandler from "../../backend/dbHandler";
import serverError from "../../backend/serverError";
import hashPassword from "../../dsql/hashPassword";
/**
* # Facebook Login
*/
export default async function facebookLogin({
usertype,
body,
}: {
body: any;
usertype: UserType;
}) {
try {
const foundUser = (await dbHandler({
query: `SELECT * FROM users WHERE email='${body.facebookUserEmail}' AND social_login='1'`,
values: [body.facebookUserEmail],
})) as any[];
if (foundUser && foundUser[0]) {
return foundUser[0];
}
let socialHashedPassword = hashPassword({
password: body.facebookUserId,
});
let newUser = (await dbHandler({
query: `INSERT INTO ${usertype} (
first_name,
last_name,
social_platform,
social_name,
email,
image,
image_thumbnail,
password,
verification_status,
social_login,
social_id,
terms_agreement,
date_created,
date_code
) VALUES (
'${body.facebookUserFirstName}',
'${body.facebookUserLastName}',
'facebook',
'facebook_${
body.facebookUserEmail
? body.facebookUserEmail.replace(/@.*/, "")
: body.facebookUserFirstName.toLowerCase()
}',
'${body.facebookUserEmail}',
'${body.facebookUserImage}',
'${body.facebookUserImage}',
'${socialHashedPassword}',
'1',
'1',
'${body.facebookUserId}',
'1',
'${Date()}',
'${Date.now()}'
)`,
values: [
body.facebookUserFirstName,
body.facebookUserLastName,
body.facebookUserEmail,
body.facebookUserImage,
socialHashedPassword,
body.facebookUserId,
],
})) as PostInsertReturn;
const newFoundUser = (await dbHandler({
query: `SELECT * FROM ${usertype} WHERE id=?`,
values: newUser?.insertId ? [newUser?.insertId] : [],
})) as any[];
} catch (/** @type {any} */ error: any) {
serverError({
component: "functions/backend/facebookLogin",
message: error.message,
});
}
return {
isFacebookAuthValid: false,
newFoundUser: null,
};
}