9d3d431416
- Added account types and privileged account types constants. - Created admin user controller for updating user security fields. - Developed role assignment controller for managing user roles. - Implemented validation middleware for request schemas. - Defined user role and auth session models for database interactions. - Created services for authentication, email notifications, and OTP handling. - Developed OAuth service for Google and Apple authentication. - Added JWT utility functions for token generation and verification. - Implemented comprehensive tests for authentication, session management, and password policies. - Created migration for updating user schema and adding new tables for auth sessions and user identities.
172 lines
4.2 KiB
JavaScript
172 lines
4.2 KiB
JavaScript
/**
|
|
* Copyright (c) 2026 Niolla
|
|
* All rights reserved.
|
|
*
|
|
* This source code is proprietary and confidential.
|
|
* Unauthorized copying, modification, distribution, or use
|
|
* of this file, via any medium, is strictly prohibited.
|
|
*/
|
|
|
|
// app/utils/idGen.util.js
|
|
|
|
const { v4: uuidv4 } = require("uuid");
|
|
const crypto = require("crypto");
|
|
const { nextSequence } = require("./referenceNumber.util");
|
|
const {log} = require("./consoleLog.utill");
|
|
|
|
const {generateInquiryNumber} = require("./id/inquiryID.utill");
|
|
const { generateRFQNumber } = require("./id/quotation.utill");
|
|
const {generatePONumber} = require("./id/po.utill");
|
|
const { generateDeliveryNote } = require("./id/dispatchNote.utill");
|
|
|
|
|
|
const generateUserId = () => {
|
|
return "usr_" + crypto.randomUUID();
|
|
};
|
|
|
|
const generateCustomerId = () => {
|
|
return "cust_" + crypto.randomUUID();
|
|
}
|
|
|
|
const generateBusinessCustomerId = () => {
|
|
return "b_cust_" + crypto.randomUUID();
|
|
}
|
|
|
|
const generateClientId = () => {
|
|
const prefix = "cli_";
|
|
return prefix + uuidv4();
|
|
};
|
|
|
|
const generateInquRefNo = async (port) => {
|
|
const reference_number = await generateInquiryNumber(port);
|
|
log("Generated Number", reference_number)
|
|
return reference_number;
|
|
};
|
|
|
|
const generateInquId = async (port) => {
|
|
const prefix = "inq_";
|
|
const inquID = prefix + uuidv4();
|
|
return inquID;
|
|
};
|
|
|
|
const generateCategoryId = () => {
|
|
const prefix = "cte_";
|
|
return prefix + uuidv4();
|
|
};
|
|
|
|
const generateRemarkId = () => {
|
|
const prefix = "rmk_";
|
|
return prefix + uuidv4();
|
|
};
|
|
|
|
const generateTodoId = () => {
|
|
const prefix = "tdo_";
|
|
return prefix + uuidv4();
|
|
};
|
|
|
|
const generateVendorStatusId = () => {
|
|
const prefix = "vst_";
|
|
return prefix + uuidv4();
|
|
}
|
|
|
|
const generateVendorId = () => {
|
|
const prefix = "vnd_";
|
|
return prefix + uuidv4();
|
|
}
|
|
|
|
const generateVendorPICId = () => {
|
|
const prefix = "vpic_";
|
|
return prefix + uuidv4();
|
|
}
|
|
|
|
const generateVendorDocumentId = () => {
|
|
const prefix = "vdoc_";
|
|
return prefix + uuidv4();
|
|
}
|
|
|
|
const generateColumnId = () => {
|
|
const prefix = "col_";
|
|
return prefix + uuidv4();
|
|
}
|
|
|
|
const generatePreCostId = () => {
|
|
const prefix = "pc_";
|
|
return prefix + uuidv4();
|
|
}
|
|
|
|
const generatePreCostPaymanentId = () => {
|
|
const prefix = "pcp_";
|
|
return prefix + uuidv4();
|
|
}
|
|
|
|
const generateCalenderId = () => {
|
|
const prefix = "cal_";
|
|
return prefix + uuidv4();
|
|
}
|
|
|
|
const generateId = () => {
|
|
return uuidv4();
|
|
};
|
|
|
|
const generateInvoiceNo = async () => {
|
|
const invoiceNumber = await nextSequence("invoice");
|
|
return `INV-${invoiceNumber.toString().padStart(6, "0")}`;
|
|
}
|
|
|
|
const generateDocumentReferenceNo = async (type) => {
|
|
const normalizedType = String(type).toUpperCase().replace(/[\s_-]+/g, "");
|
|
|
|
if (normalizedType === "QUOTATION"){
|
|
// Implement quotation number generation logic here
|
|
return 'N/A'
|
|
} else if (normalizedType === "PRECOST"){
|
|
// Implement precost number generation logic here
|
|
const precostRef = await generateRFQNumber()
|
|
return precostRef
|
|
} else if (normalizedType === "PO"){
|
|
// Implement contract number generation logic here
|
|
const Ref = await generatePONumber("OSC/2602")
|
|
return Ref
|
|
} else if (normalizedType === "BILL"){
|
|
return 'N/A'
|
|
// Implement bill number generation logic here
|
|
} else if (normalizedType === "PAYMENT"){
|
|
return 'N/A'
|
|
// Implement payment number generation logic here
|
|
} else if (normalizedType === "INVOICE"){
|
|
// Implement invoice number generation logic here
|
|
const invoiceNo = await generateInvoiceNo();
|
|
return invoiceNo;
|
|
} else if (normalizedType === "CREDITNOTE") {
|
|
return 'N/A';
|
|
} else if (normalizedType === "DELIVERYNOTE") {
|
|
const orderNo = "OSC/2602";
|
|
const deliveryNoteNo = await generateDeliveryNote(orderNo);
|
|
return deliveryNoteNo;
|
|
}else {
|
|
throw new Error("Unsupported document type for ID generation");
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
generateUserId,
|
|
generateCustomerId,
|
|
generateBusinessCustomerId,
|
|
generateClientId,
|
|
generateInquId,
|
|
generateInquRefNo,
|
|
generateId,
|
|
generateCategoryId,
|
|
generateRemarkId,
|
|
generateTodoId,
|
|
generateVendorStatusId,
|
|
generateVendorId,
|
|
generateVendorPICId,
|
|
generateVendorDocumentId,
|
|
generateColumnId,
|
|
generatePreCostId,
|
|
generatePreCostPaymanentId,
|
|
generateDocumentReferenceNo,
|
|
generateCalenderId,
|
|
};
|