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