ishans24's picture
adding file
1c8e50c
/**
* Utility functions for role-based access control
*/
/**
* Check if a user has admin privileges
* @param {Object} user - User object with role property
* @returns {boolean} True if user is an admin
*/
export const isAdmin = (user) => {
if (!user || !user.role) return false;
const role = user.role.toUpperCase();
return role === 'ROLE_ADMIN' || role === 'ADMIN';
};
/**
* Check if a user has a specific role
* @param {Object} user - User object with role property
* @param {string} roleName - Role name to check (with or without ROLE_ prefix)
* @returns {boolean} True if user has the role
*/
export const hasRole = (user, roleName) => {
if (!user || !user.role || !roleName) return false;
const userRole = user.role.toUpperCase();
const checkRole = roleName.toUpperCase();
// Handle both formats: "ADMIN" and "ROLE_ADMIN"
const roleWithPrefix = checkRole.startsWith('ROLE_') ? checkRole : `ROLE_${checkRole}`;
const roleWithoutPrefix = checkRole.replace('ROLE_', '');
return userRole === roleWithPrefix || userRole === roleWithoutPrefix;
};
/**
* Get display name for a role
* @param {string} role - Role string (e.g., "ROLE_ADMIN", "ROLE_CUSTOMER")
* @returns {string} Human-readable role name
*/
export const getRoleDisplayName = (role) => {
if (!role) return 'User';
const roleMap = {
'ROLE_ADMIN': 'Administrator',
'ADMIN': 'Administrator',
'ROLE_CUSTOMER': 'Team Member',
'CUSTOMER': 'Team Member',
'ROLE_USER': 'User',
'USER': 'User',
};
return roleMap[role.toUpperCase()] || 'User';
};
export default {
isAdmin,
hasRole,
getRoleDisplayName,
};