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.
79 lines
2.4 KiB
JavaScript
79 lines
2.4 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/models/index.js
|
|
|
|
|
|
const { Sequelize, DataTypes } = require("sequelize");
|
|
const dbConfig = require("../config/db.config");
|
|
|
|
const loggingOption = process.env.NODE_ENV === "development" ? console.log : false;
|
|
|
|
const sequelize = new Sequelize(
|
|
dbConfig.DB,
|
|
dbConfig.USER,
|
|
dbConfig.PASSWORD,
|
|
{
|
|
host: dbConfig.HOST,
|
|
port: dbConfig.PORT,
|
|
dialect: dbConfig.DIALECT,
|
|
pool: dbConfig.pool,
|
|
logging: loggingOption
|
|
}
|
|
);
|
|
|
|
const db = {};
|
|
|
|
db.Sequelize = Sequelize;
|
|
db.sequelize = sequelize;
|
|
|
|
/* Register db models */
|
|
|
|
// User and Authentication
|
|
db.User = require("./user/user.model")(sequelize, DataTypes);
|
|
db.Customer = require("./user/customer.model")(sequelize, DataTypes);
|
|
db.BusinessCustomer = require("./user/businessCustomer.model")(sequelize, DataTypes);
|
|
db.AuthSession = require("./user/authSession.model")(sequelize, DataTypes);
|
|
db.UserIdentity = require("./user/userIdentity.model")(sequelize, DataTypes);
|
|
db.UserActivity = require("./activities/userActivities.model")(sequelize, DataTypes);
|
|
db.Profile = require("./user/profile.model")(sequelize, DataTypes);
|
|
|
|
// Uploads
|
|
db.Upload = require("./upload/upload.model")(sequelize, DataTypes);
|
|
|
|
// Roles and Permissions
|
|
db.roles = require("./permission/role.model")(sequelize, DataTypes);
|
|
db.permission = require("./permission/permission.model")(sequelize, DataTypes);
|
|
db.rolePermission = require("./permission/rolePermission.model")(sequelize, DataTypes);
|
|
db.userPermission = require("./permission/userPermission.model")(sequelize, DataTypes);
|
|
db.UserRole = require("./permission/userRole.model")(sequelize, DataTypes);
|
|
|
|
// Document Management
|
|
db.Document = require("./document/document.model")(sequelize, DataTypes);
|
|
db.DocumentType = require("./document/documentType.model")(sequelize, DataTypes);
|
|
|
|
// Reference Numbers
|
|
db.referenceNumber = require("./referenceNumbers/referenceNumber.model")(sequelize, DataTypes);
|
|
|
|
// Notifications
|
|
db.notification = require("./notification/notification.model")(sequelize, DataTypes);
|
|
db.userNotification = require("./notification/userNotification.model")(sequelize, DataTypes);
|
|
|
|
/* Associations */
|
|
Object.keys(db).forEach(model => {
|
|
if (db[model].associate) {
|
|
db[model].associate(db);
|
|
}
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = db;
|