Fix jwt-token
This commit is contained in:
@@ -1,5 +1,17 @@
|
||||
const jwt = require('jsonwebtoken');
|
||||
const { User, Tenant } = require('../models');
|
||||
|
||||
// Allow models to be injected for testing
|
||||
let models = null;
|
||||
try {
|
||||
models = require('../models');
|
||||
} catch (error) {
|
||||
// Models will be injected during testing
|
||||
}
|
||||
|
||||
// Function to set models (used in testing)
|
||||
function setModels(testModels) {
|
||||
models = testModels;
|
||||
}
|
||||
|
||||
async function authenticateToken(req, res, next) {
|
||||
const authHeader = req.headers['authorization'];
|
||||
@@ -27,10 +39,10 @@ async function authenticateToken(req, res, next) {
|
||||
// For older tokens without tenantId, we need to look up the user's tenant
|
||||
let tenantId = decoded.tenantId;
|
||||
|
||||
const user = await User.findByPk(decoded.userId, {
|
||||
const user = await models.User.findByPk(decoded.userId, {
|
||||
attributes: ['id', 'username', 'email', 'role', 'is_active', 'tenant_id'],
|
||||
include: [{
|
||||
model: Tenant,
|
||||
model: models.Tenant,
|
||||
as: 'tenant',
|
||||
attributes: ['slug', 'name']
|
||||
}]
|
||||
@@ -89,5 +101,6 @@ function requireRole(roles) {
|
||||
|
||||
module.exports = {
|
||||
authenticateToken,
|
||||
requireRole
|
||||
requireRole,
|
||||
setModels
|
||||
};
|
||||
|
||||
@@ -83,9 +83,9 @@ async function setupTestEnvironment() {
|
||||
id: mainModelsPath
|
||||
};
|
||||
|
||||
// Clear cache for middleware modules so they re-import the overridden models
|
||||
const authMiddlewarePath = path.resolve(__dirname, '../middleware/auth.js');
|
||||
delete require.cache[authMiddlewarePath];
|
||||
// Inject test models into middleware modules
|
||||
const authMiddleware = require('../middleware/auth');
|
||||
authMiddleware.setModels(models);
|
||||
|
||||
// Sync database
|
||||
await sequelize.sync({ force: true });
|
||||
|
||||
Reference in New Issue
Block a user