Fix jwt-token
This commit is contained in:
@@ -126,6 +126,11 @@ const hasPermission = (userRole, permission) => {
|
||||
* @returns {boolean} - True if user has permission
|
||||
*/
|
||||
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
|
||||
const actionMap = {
|
||||
'read': 'view',
|
||||
@@ -149,11 +154,11 @@ const checkPermission = (userRole, resource, action) => {
|
||||
'ui_customization': 'branding'
|
||||
};
|
||||
|
||||
const mappedResource = resourceMap[resource] || resource;
|
||||
const mappedAction = actionMap[action] || action;
|
||||
const mappedResource = resourceMap[normalizedResource] || normalizedResource;
|
||||
const mappedAction = actionMap[normalizedAction] || normalizedAction;
|
||||
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) {
|
||||
return res.status(403).json({
|
||||
success: false,
|
||||
message: 'Access denied - no user role'
|
||||
message: 'Insufficient permissions'
|
||||
});
|
||||
}
|
||||
|
||||
if (!checkPermission(req.user.role, resource, action)) {
|
||||
return res.status(403).json({
|
||||
success: false,
|
||||
message: 'Access denied - insufficient permissions'
|
||||
message: 'Insufficient permissions'
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user