Auth #1

Merged
Sathira merged 17 commits from auth into main 2026-09-07 06:53:05 +00:00
3 changed files with 58 additions and 22 deletions
Showing only changes of commit ef8db0988b - Show all commits
+26 -9
View File
@@ -11,6 +11,7 @@
const db = require("../models"); const db = require("../models");
const { hashPassword } = require("../utils/hashPassword.util"); const { hashPassword } = require("../utils/hashPassword.util");
const { validatePassword } = require("../utils/validation/validatePassword.util");
const { generateUserId, generateId } = require("../utils/idGen.util"); const { generateUserId, generateId } = require("../utils/idGen.util");
const { logActivity } = require("../services/activity.service"); const { logActivity } = require("../services/activity.service");
const { sendMail } = require("../utils/mail.util"); const { sendMail } = require("../utils/mail.util");
@@ -26,15 +27,10 @@ exports.createNewUser = async (req, res) => {
firstName, firstName,
lastName, lastName,
email, email,
role, password,
roleID,
accountType, accountType,
department,
} = req.body; } = req.body;
const hashedPassword = await hashPassword(process.env.DEFAULT_PASSWORD);
const userID = generateUserId();
const userExists = await User.findOne({ where: { email } }); const userExists = await User.findOne({ where: { email } });
if (userExists) { if (userExists) {
await transaction.rollback(); await transaction.rollback();
@@ -45,6 +41,29 @@ exports.createNewUser = async (req, res) => {
}); });
} }
let pass;
if(accountType === "admin" || accountType === "superadmin" || accountType === "manager" || accountType === "support_agent") {
pass = process.env.DEFAULT_PASSWORD;
}else{
pass = password;
}
const validatePasswordResult = validatePassword(pass);
if (!validatePasswordResult) {
await transaction.rollback();
return res.status(400).send({
success: false,
message: "Password does not meet the required criteria",
});
}
const hashedPassword = await hashPassword(pass);
const userID = generateUserId();
const newUser = await User.create( const newUser = await User.create(
{ {
id: userID, id: userID,
@@ -53,12 +72,10 @@ exports.createNewUser = async (req, res) => {
email, email,
password: hashedPassword, password: hashedPassword,
accountType, accountType,
role,
roleID: roleID || "N/A",
department: department || null,
}, },
{ transaction }, { transaction },
); );
const newProfile = await Profile.create( const newProfile = await Profile.create(
{ {
+1 -13
View File
@@ -36,20 +36,8 @@ module.exports = (sequelize, DataTypes) => {
allowNull: false allowNull: false
}, },
accountType: { accountType: {
type: DataTypes.ENUM("admin", "management", "team_head", "user"), type: DataTypes.ENUM("user", "admin", "superadmin", "manager", "business_customer", "rider", "customer","support_agent"),
defaultValue: "user" defaultValue: "user"
},
role: {
type: DataTypes.STRING,
allowNull: false
},
roleID:{
type: DataTypes.STRING,
allowNull: false
},
department: {
type: DataTypes.STRING,
allowNull: true
} }
}, },
{ {
@@ -0,0 +1,31 @@
const validatePassword = (password) => {
// Check if password is a string
if (typeof password !== "string") {
return false;
}
// At least 1 uppercase letter
const hasUppercase = /[A-Z]/.test(password);
// At least 1 lowercase letter
const hasLowercase = /[a-z]/.test(password);
// At least 1 symbol
const hasSymbol = /[^A-Za-z0-9]/.test(password);
// At least 4 numbers
const numberCount = (password.match(/[0-9]/g) || []).length;
const hasFourNumbers = numberCount >= 4;
return (
hasUppercase &&
hasLowercase &&
hasSymbol &&
hasFourNumbers
);
};
module.exports = {
validatePassword,
};