/**
 * Static permission definitions — single source of truth.
 * No server-side imports: safe to use in both client and server code.
 */

export const PERMISSIONS = {
  ADMIN_ACCESS:  'admin.access',
  USERS_VIEW:    'users.view',
  USERS_MANAGE:  'users.manage',
  ROLES_VIEW:    'roles.view',
  ROLES_MANAGE:  'roles.manage',
};

export const PERMISSION_DEFINITIONS = [
  { key: 'admin.access',  name: 'Accès au panneau admin',   description: "Permet d'accéder à l'interface d'administration.",                              group_name: 'Administration' },
  { key: 'users.view',    name: 'Voir les utilisateurs',    description: 'Permet de consulter la liste des membres et leurs profils.',                    group_name: 'Utilisateurs' },
  { key: 'users.manage',  name: 'Gérer les utilisateurs',   description: 'Permet de créer, modifier et supprimer des comptes membres.',                   group_name: 'Utilisateurs' },
  { key: 'roles.view',    name: 'Voir les rôles',           description: 'Permet de consulter la liste des rôles et leurs permissions.',                  group_name: 'Rôles' },
  { key: 'roles.manage',  name: 'Gérer les rôles',          description: 'Permet de créer, modifier et supprimer des rôles.',                            group_name: 'Rôles' },
];

/**
 * Returns permissions grouped by group_name.
 * @returns {Object.<string, Array>}
 */
export function getPermissionGroups() {
  return PERMISSION_DEFINITIONS.reduce((acc, perm) => {
    if (!acc[perm.group_name]) acc[perm.group_name] = [];
    acc[perm.group_name].push(perm);
    return acc;
  }, {});
}
