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, }; }