---
title: "Référence d'API — @nodefony/security — voter"
source: docs/api/security/voter.md
url: https://nodefony.github.io/nodefony-core/docs/api/security/voter/
---


[Documentation](../../../) › [Référence d'API](../../) › [`@nodefony/security`](../) › voter

> Générée depuis les déclarations de types publiées de `@nodefony/security` **10.0.0-beta.5** : exactement ce que reçoit une application qui l'installe. Cette page n'existe dans aucun dépôt — pour la corriger, on corrige le TSDoc du code.

## `@nodefony/security`

`import { … } from "@nodefony/security"` — 6 symboles.

### Classes (2)

#### `RoleVoter`

```ts
class RoleVoter implements IAccessVoter
```

Voter built-in **niveau A** — résout les attributs `ROLE_*` via la hiérarchie de rôles (`RoleHierarchyWalker`).

- `constructor(container: Container)`
- `supports(attribute: string): boolean` — Ce voter sait-il décider de cet attribut/sujet ?
- `vote(token: IToken, attribute: string): Promise<VoterVote>` — Vote pour l'attribut donné sur le sujet donné.

#### `ScopeVoter`

```ts
class ScopeVoter implements IAccessVoter
```

Voter built-in **axe SCOPE** (P6.8) — applique les scopes `api:action` déclarés par `@RequireScope`. Frère du `RoleVoter` sur l'autre axe : les rôles disent QUI tu es, les scopes disent ce qu'une CLÉ déléguée a le droit de faire.

- `supports(attribute: string): boolean` — Capte les attributs scope `api:action` — ni `ROLE_*`, ni attribut métier sans `:`.
- `vote(token: IToken, attribute: string): Promise<VoterVote>` — Vote pour l'attribut donné sur le sujet donné.

### Fonctions (2)

#### `listVoterFactories`

```ts
function listVoterFactories(): ReadonlyMap<string, VoterFactory>
```

Toutes les fabriques enregistrées (consommées par l'`AuthorizationService`).

#### `registerVoterFactory`

```ts
function registerVoterFactory(name: string, factory: VoterFactory): void
```

Enregistre (ou remplace) la fabrique d'un voter. Appelé par les builtins au chargement du module, et par les apps/plugins pour les leurs (`ProjectVoter`, `TenantVoter`…).

### Interfaces (1)

#### `IVoterFactoryContext`

```ts
interface IVoterFactoryContext
```

Contexte passé à une fabrique de voter : le container DI pour résoudre les services dont le voter a besoin (repository, hiérarchie de rôles…). La fabrique ne fait QUE construire — les résolutions coûteuses restent lazy dans l'instance.

- `readonly container: Container` — Container DI — résolution de services (`roleHierarchy`, repositories…).

### Types (1)

#### `VoterFactory`

```ts
type VoterFactory = (ctx: IVoterFactoryContext) => IAccessVoter
```

Fabrique d'un voter pour un nom donné.

---

[← Toutes les références d'API](../../)
