Fix jwt-token

This commit is contained in:
2025-09-15 07:05:38 +02:00
parent 6eafcbab19
commit 8ada5d8b2a

View File

@@ -126,6 +126,11 @@ const hasPermission = (userRole, permission) => {
* @returns {boolean} - True if user has permission * @returns {boolean} - True if user has permission
*/ */
const checkPermission = (userRole, resource, action) => { const checkPermission = (userRole, resource, action) => {
// Normalize inputs to lowercase for case-insensitive comparison
const normalizedRole = userRole ? userRole.toLowerCase() : '';
const normalizedResource = resource ? resource.toLowerCase() : '';
const normalizedAction = action ? action.toLowerCase() : '';
// Map common actions to our permission system // Map common actions to our permission system
const actionMap = { const actionMap = {
'read': 'view', 'read': 'view',
@@ -149,11 +154,11 @@ const checkPermission = (userRole, resource, action) => {
'ui_customization': 'branding' 'ui_customization': 'branding'
}; };
const mappedResource = resourceMap[resource] || resource; const mappedResource = resourceMap[normalizedResource] || normalizedResource;
const mappedAction = actionMap[action] || action; const mappedAction = actionMap[normalizedAction] || normalizedAction;
const permission = `${mappedResource}.${mappedAction}`; const permission = `${mappedResource}.${mappedAction}`;
return hasPermission(userRole, permission); return hasPermission(normalizedRole, permission);
}; };
/** /**
@@ -167,14 +172,14 @@ const requirePermission = (resource, action) => {
if (!req.user || !req.user.role) { if (!req.user || !req.user.role) {
return res.status(403).json({ return res.status(403).json({
success: false, success: false,
message: 'Access denied - no user role' message: 'Insufficient permissions'
}); });
} }
if (!checkPermission(req.user.role, resource, action)) { if (!checkPermission(req.user.role, resource, action)) {
return res.status(403).json({ return res.status(403).json({
success: false, success: false,
message: 'Access denied - insufficient permissions' message: 'Insufficient permissions'
}); });
} }