What are best practices for managing user permissions and roles within a PHP-based admin system?

To manage user permissions and roles within a PHP-based admin system, it is best practice to use a role-based access control (RBAC) system. This involves defining roles (e.g., admin, editor, viewer) and assigning permissions to each role. Users are then assigned to roles, and their access is determined based on the permissions associated with their role.

// Define roles and permissions
$roles = [
    'admin' => ['manage_users', 'manage_content'],
    'editor' => ['manage_content'],
    'viewer' => ['view_content']
];

// Assign user to a role
$userRole = 'admin';

// Check if user has permission
$permission = 'manage_users';
if (in_array($permission, $roles[$userRole])) {
    echo "User has permission to $permission";
} else {
    echo "User does not have permission to $permission";
}