Implement password reset and change features with email notifications

This commit is contained in:
Isuru Bimsara
2026-08-21 09:56:54 +05:30
parent b2c5e198a1
commit 6a4fe852e5
6 changed files with 597 additions and 138 deletions
+16 -13
View File
@@ -16,56 +16,60 @@ module.exports = (sequelize, DataTypes) => {
id: {
type: DataTypes.STRING,
primaryKey: true,
collate: 'utf8mb4_general_ci'
collate: "utf8mb4_general_ci",
},
firstName: {
type: DataTypes.STRING,
allowNull: false
allowNull: false,
},
lastName: {
type: DataTypes.STRING,
allowNull: false
allowNull: false,
},
email: {
type: DataTypes.STRING,
allowNull: false,
unique: true
unique: true,
},
password: {
type: DataTypes.STRING,
allowNull: false
allowNull: false,
},
accountType: {
type: DataTypes.ENUM("business_customer", "customer"),
defaultValue: "customer"
defaultValue: "customer",
},
accountStatus: {
type: DataTypes.ENUM(
"PENDING_VERIFICATION",
"ACTIVE",
"SUSPENDED",
"DEACTIVATED"
"DEACTIVATED",
),
allowNull: false,
defaultValue: "PENDING_VERIFICATION",
},
emailVerifiedAt: {
emailVerifiedAt: {
type: DataTypes.DATE,
allowNull: true,
defaultValue: null,
},
passwordChangedAt: {
type: DataTypes.DATE,
allowNull: true,
defaultValue: null,
},
},
{
tableName: "users",
timestamps: true
}
timestamps: true,
},
);
User.associate = (db) => {
User.hasMany(db.userPermission, {
foreignKey: "user_id",
as: "userPermissions"
as: "userPermissions",
});
User.hasOne(db.Profile, {
foreignKey: "user_id",
@@ -79,7 +83,6 @@ module.exports = (sequelize, DataTypes) => {
foreignKey: "user_id",
as: "businessCustomer",
});
};
return User;