feature/IO-3255-simplified-parts-management - Checkpoint / Meeting changes

This commit is contained in:
Dave Richer
2025-07-03 14:05:35 -04:00
parent 5fa58e5013
commit 94b154a4ac
4 changed files with 70 additions and 105 deletions

View File

@@ -32,12 +32,17 @@ const ensureEmailNotRegistered = async (email) => {
};
/**
* Creates a new Firebase user with the provided email.
* Creates a new Firebase user with the provided email and optional password.
* @param email
* @param password
* @returns {Promise<UserRecord>}
*/
const createFirebaseUser = async (email) => {
return admin.auth().createUser({ email });
const createFirebaseUser = async (email, password = null) => {
const userData = { email };
if (password) {
userData.password = password;
}
return admin.auth().createUser(userData);
};
/**
@@ -158,7 +163,7 @@ const partsManagementProvisioning = async (req, res) => {
const p = { ...req.body, userEmail: req.body.userEmail?.toLowerCase() };
try {
// Validate inputs
// Validate inputs
await ensureEmailNotRegistered(p.userEmail);
requireFields(p, [
"external_shop_id",
@@ -179,7 +184,7 @@ const partsManagementProvisioning = async (req, res) => {
ioadmin: true
});
// Create shop
// Create shop
const shopInput = {
shopname: p.shopname,
address1: p.address1,
@@ -198,6 +203,9 @@ const partsManagementProvisioning = async (req, res) => {
height: "",
headerMargin: DefaultNewShop.logo_img_path.headerMargin
},
features: {
partsManagementOnly: true // This is a parts management only shop
},
md_ro_statuses: DefaultNewShop.md_ro_statuses,
vendors: {
data: p.vendors.map((v) => ({
@@ -221,9 +229,12 @@ const partsManagementProvisioning = async (req, res) => {
};
const newShopId = await insertBodyshop(shopInput);
// Create user + association
const userRecord = await createFirebaseUser(p.userEmail);
const resetLink = await generateResetLink(p.userEmail);
// Create user + association
const userRecord = await createFirebaseUser(p.userEmail, p.userPassword);
let resetLink = null;
if (!p.userPassword) {
resetLink = await generateResetLink(p.userEmail);
}
const createdUser = await insertUserAssociation(userRecord.uid, p.userEmail, newShopId);
return res.status(200).json({
@@ -231,7 +242,7 @@ const partsManagementProvisioning = async (req, res) => {
user: {
id: createdUser.id,
email: createdUser.email,
resetLink
resetLink: resetLink || undefined // Only include resetLink if it exists
}
});
} catch (err) {