diff --git a/server/firebase/firebase-handler.js b/server/firebase/firebase-handler.js index 2cee624dd..7223d89a8 100644 --- a/server/firebase/firebase-handler.js +++ b/server/firebase/firebase-handler.js @@ -1,11 +1,11 @@ -const admin = require("firebase-admin"); -const logger = require("../utils/logger"); const path = require("path"); -const { sendProManagerWelcomeEmail } = require("../email/sendemail"); - require("dotenv").config({ path: path.resolve(process.cwd(), `.env.${process.env.NODE_ENV || "development"}`) }); + +const admin = require("firebase-admin"); +const logger = require("../utils/logger"); +const { sendProManagerWelcomeEmail } = require("../email/sendemail"); const client = require("../graphql-client/graphql-client").client; const serviceAccount = require(process.env.FIREBASE_ADMINSDK_JSON); @@ -17,9 +17,7 @@ admin.initializeApp({ databaseURL: process.env.FIREBASE_DATABASE_URL }); -exports.admin = admin; - -exports.createUser = async (req, res) => { +const createUser = async (req, res) => { logger.log("admin-create-user", "ADMIN", req.user.email, null, { request: req.body, ioadmin: true @@ -61,57 +59,45 @@ exports.createUser = async (req, res) => { } }; -exports.promanagerWelcomeEmail = (req, res) => { +const sendPromanagerWelcomeEmail = (req, res) => { const { authid, email } = req.body; - // Gate the operation to only admin users - if (!adminEmail.includes(req.user.email) && !req.user.ioadmin) { - logger.log("admin-update-user-unauthorized", "ERROR", req.user.email, null, { - request: req.body, - user: req.user - }); - res.sendStatus(404); - return; - } - + // Fetch user from Firebase admin .auth() .getUser(authid) .then((userRecord) => { if (!userRecord) { - res.status(404).json({ message: "User not found in Firebase." }); - return Promise.reject("User not found in Firebase."); + return Promise.reject({ status: 404, message: "User not found in Firebase." }); } // Fetch user data from the database using GraphQL return client.request( ` - query GET_USER_BY_EMAIL($email: String!) { - users(where: { email: { _eq: $email } }) { - email - validemail - associations { + query GET_USER_BY_EMAIL($email: String!) { + users(where: { email: { _eq: $email } }) { + email + validemail + associations { + id + shopid + bodyshop { id - shopid - bodyshop { - id - convenient_company - } + convenient_company } } } - `, + }`, { email: email.toLowerCase() } ); }) .then((dbUserResult) => { const dbUser = dbUserResult?.users?.[0]; if (!dbUser) { - res.status(404).json({ message: "User not found in database." }); - return Promise.reject("User not found in database."); + return Promise.reject({ status: 404, message: "User not found in database." }); } - // Check if the email is valid before proceeding + // Validate email before proceeding if (!dbUser.validemail) { logger.log("admin-send-welcome-email-skip", "ADMIN", req.user.email, null, { message: "User email is not valid, skipping email.", @@ -120,11 +106,11 @@ exports.promanagerWelcomeEmail = (req, res) => { return res.status(200).json({ message: "User email is not valid, email not sent." }); } - // Check if convenient_company is equal to "promanager" + // Check if the user's company is ProManager const convenientCompany = dbUser.associations?.[0]?.bodyshop?.convenient_company; if (convenientCompany !== "promanager") { logger.log("admin-send-welcome-email-skip", "ADMIN", req.user.email, null, { - message: `convenient_company is not "promanager", skipping email.`, + message: 'convenient_company is not "promanager", skipping email.', convenientCompany }); return res.status(200).json({ message: `convenient_company is not "promanager", email not sent.` }); @@ -134,13 +120,10 @@ exports.promanagerWelcomeEmail = (req, res) => { return admin .auth() .generatePasswordResetLink(dbUser.email) - .then((resetLink) => ({ - dbUser, - resetLink - })); + .then((resetLink) => ({ dbUser, resetLink })); }) .then(({ dbUser, resetLink }) => { - // Send email logic here (replace this with your email-sending service) + // Send welcome email (replace with your actual email-sending service) return sendProManagerWelcomeEmail({ to: dbUser.email, subject: "Welcome to the ProManager platform.", @@ -148,17 +131,18 @@ exports.promanagerWelcomeEmail = (req, res) => { header: "", subHeader: "", body: ` -
Welcome to the ProManager platform. Please click the link below to reset your password:
- -User Details:
-Welcome to the ProManager platform. Please click the link below to reset your password:
+ +User Details:
+