feature/IO-3255-simplified-parts-management - Checkpoint / Meeting changes
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user