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


[Documentation](../../../) › [Référence d'API](../../) › [`nodefony`](../) › client-runtime

> Générée depuis les déclarations de types publiées de `nodefony` **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/client`

`import { … } from "nodefony/client"` — 40 symboles.

### Fonctions (6)

#### `isLoginPageSkin`

```ts
function isLoginPageSkin(value: unknown): value is LoginPageSkin
```

Dit si une valeur nomme un habillage connu.

#### `loginPagePath`

```ts
function loginPagePath(from?: string, page?: string): string
```

Adresse de la page de connexion qui ramène à `from` une fois connecté — le lien « Se connecter » d'une page applicative.

#### `loginPageSkinFile`

```ts
function loginPageSkinFile(skin: LoginPageSkin): string | null
```

Fichier de la feuille d'un habillage, relatif à `LOGIN_PAGE_ASSETS_BASE`.

#### `oauth2AuthorizePath`

```ts
function oauth2AuthorizePath(provider: string, from?: string, back?: string): string
```

Adresse qui démarre la connexion par un fournisseur : à ouvrir en navigation PLEINE PAGE, jamais par `fetch` — le navigateur doit suivre les redirections vers le fournisseur et revenir avec le cookie de session posé au retour.

#### `readSessionAuthentication`

```ts
function readSessionAuthentication(session: IMetaBagReader | null): ISessionAuthentication | null
```

Lit quand et comment une session a été ouverte.

#### `safeRedirectPath`

```ts
function safeRedirectPath(value: unknown, fallback?: string): string
```

Rend `value` si c'est un chemin LOCAL sûr, sinon `fallback`.

### Constantes (27)

#### `AUTH_API_BASE`

```ts
const AUTH_API_BASE = "/nodefony/security/api/auth"
```

Base des routes de session : connexion, second facteur, déconnexion, identité.

#### `AUTH_LOGIN_PATH`

```ts
const AUTH_LOGIN_PATH = "/nodefony/security/api/auth/login"
```

Route de connexion par session : `POST` avec `{username, password}`.

#### `AUTH_LOGIN_TOTP_PATH`

```ts
const AUTH_LOGIN_TOTP_PATH = "/nodefony/security/api/auth/login/totp"
```

Second facteur après un `202 mfaRequired` : `POST` avec `{code}` (TOTP ou code de récupération).

#### `AUTH_LOGOUT_PATH`

```ts
const AUTH_LOGOUT_PATH = "/nodefony/security/api/auth/logout"
```

Déconnexion : `POST`, idempotente ; rend `logoutUrl` quand la session venait d'un fournisseur.

#### `AUTH_ME_PATH`

```ts
const AUTH_ME_PATH = "/nodefony/security/api/auth/me"
```

Identité de la session courante : `GET`, toujours `200` — `{ user }`, ou `{ user: null }` sans session.

#### `DEFAULT_LOGIN_PAGE_SKIN`

```ts
const DEFAULT_LOGIN_PAGE_SKIN: LoginPageSkin
```

Habillage servi quand la configuration n'en choisit aucun.

#### `INSECURE_TRANSPORT_MESSAGE`

```ts
const INSECURE_TRANSPORT_MESSAGE = "Credentials must be sent over HTTPS"
```

Refus d'un secret de connexion reçu en clair (HTTP) en production — corps `error` d'une réponse 403 des routes de connexion.

#### `LOGIN_PAGE_ASSETS_BASE`

```ts
const LOGIN_PAGE_ASSETS_BASE = "/nodefony/security/login"
```

Base des fichiers de la page de connexion par défaut (script, feuille de style). Distincte de la page elle-même, dont le chemin se règle (`loginPage.path`) : ces fichiers ne changent pas d'adresse quand la page en change.

#### `LOGIN_PAGE_LAYOUTS`

```ts
const LOGIN_PAGE_LAYOUTS: readonly [ "card", "split", "bare" ]
```

Modes de mise en page de la page de connexion par défaut.

#### `LOGIN_PAGE_PATH`

```ts
const LOGIN_PAGE_PATH = "/login"
```

Chemin par défaut de la page de connexion servie par le framework.

#### `LOGIN_PAGE_SCRIPT_PATH`

```ts
const LOGIN_PAGE_SCRIPT_PATH = "/nodefony/security/login/login.js"
```

Script de la page de connexion par défaut (bundle `nodefony/login.js`).

#### `LOGIN_PAGE_SKINS`

```ts
const LOGIN_PAGE_SKINS: readonly [ "frontispiece", "ledger", "horizon", "console", "blueprint", "dots", "minimal", "enterprise", "photo-card" ]
```

Habillages de la page de connexion par défaut (`loginPage.skin`).

#### `LOGIN_PAGE_SKIN_SPECS`

```ts
const LOGIN_PAGE_SKIN_SPECS: Readonly<Record<LoginPageSkin, ILoginPageSkinSpec>>
```

Mise en page et fond de chaque habillage — le `Record` exige les neuf.

#### `LOGIN_PAGE_STYLE_PATH`

```ts
const LOGIN_PAGE_STYLE_PATH = "/nodefony/security/login/login.css"
```

Feuille de style de la page de connexion par défaut.

#### `LOGIN_PAGE_THEME_KEY`

```ts
const LOGIN_PAGE_THEME_KEY = "nf-login-theme"
```

Clé du stockage local où la page de connexion par défaut retient le thème choisi (`light` ou `dark`). Le gabarit la lit avant le premier rendu, le script de la page l'écrit à la bascule.

#### `MFA_METHOD_TOTP`

```ts
const MFA_METHOD_TOTP = "totp"
```

Méthode de second facteur « code à usage unique » : un code TOTP, ou un code de récupération, présenté à `AUTH_LOGIN_TOTP_PATH`.

#### `OAUTH2_API_BASE`

```ts
const OAUTH2_API_BASE = "/nodefony/security/api/oauth2"
```

Base de la connexion par un fournisseur externe (OAuth 2.0 / OpenID Connect).

#### `OAUTH2_CANCELLED_REASON`

```ts
const OAUTH2_CANCELLED_REASON = "access_denied"
```

Code OAuth 2.0 d'une annulation par l'utilisateur (RFC 6749 §4.1.2.1).

#### `OAUTH2_FAILED_REASON`

```ts
const OAUTH2_FAILED_REASON = "failed"
```

Valeur de `reason` que le callback OAuth pose sur l'écran d'échec quand la cause n'est pas un code normalisé du fournisseur (`state` invalide, échange du code refusé, compte non provisionné). Seule `access_denied` dit une ANNULATION ; toute autre valeur est un échec à annoncer.

#### `OAUTH2_PROVIDERS_PATH`

```ts
const OAUTH2_PROVIDERS_PATH = "/nodefony/security/api/oauth2/providers"
```

Fournisseurs de connexion configurés : `GET` → `{ providers: {name, label}[] }`.

#### `SESSION_AMR_KEY`

```ts
const SESSION_AMR_KEY = "amr"
```

Clé de métadonnée : méthodes d'authentification utilisées (RFC 8176).

#### `SESSION_AUTH_AT_KEY`

```ts
const SESSION_AUTH_AT_KEY = "authAt"
```

Clé de métadonnée : heure de l'authentification (millisecondes epoch).

#### `WEBAUTHN_API_BASE`

```ts
const WEBAUTHN_API_BASE = "/nodefony/security/api/webauthn"
```

Base des cérémonies WebAuthn (passkeys).

#### `WEBAUTHN_LOGIN_OPTIONS_PATH`

```ts
const WEBAUTHN_LOGIN_OPTIONS_PATH = "/nodefony/security/api/webauthn/login/options"
```

Défi de connexion par passkey : `POST` (corps vide) → options WebAuthn en JSON.

#### `WEBAUTHN_LOGIN_VERIFY_PATH`

```ts
const WEBAUTHN_LOGIN_VERIFY_PATH = "/nodefony/security/api/webauthn/login/verify"
```

Vérification de la passkey : `POST` avec `{response}` → ouvre la session.

#### `WEBAUTHN_STATUS_PATH`

```ts
const WEBAUTHN_STATUS_PATH = "/nodefony/security/api/webauthn/status"
```

État de la connexion par passkey : `GET` → `{ enabled: boolean }`, toujours `200` quand le service existe. Les cérémonies répondent `503` quand les passkeys sont coupées ; cette route permet à un écran de connexion de ne pas proposer un bouton voué à cet échec.

#### `isPlainObject`

```ts
const isPlainObject: (obj: unknown) => obj is Record<string, unknown>
```

Vérifie qu'un objet est un "plain object" — `{}` ou `Object.create(null)`.

### Interfaces (5)

#### `ILoginPageDescription`

```ts
interface ILoginPageDescription
```

Ce que la page de connexion par défaut doit afficher, décrit par la sécurité et lu par le contrôleur qui la sert.

- `readonly path: string` — Chemin où la page est servie (`loginPage.path`).
- `readonly title: string | null` — Titre de la page, ou `null` pour le titre par défaut.
- `readonly logo: string | null` — Adresse du logo, ou `null` pour celui de Nodefony.
- `readonly template: string | null` — Gabarit `.eta` de l'application qui remplace celui du framework, ou `null`.
- `readonly heading: string | null` — Titre de la carte et de l'onglet, ou `null` pour « Se connecter ».
- `readonly subtitle: string | null` — Ligne sous le titre, ou `null` pour la phrase déduite des moyens proposés.
- `readonly stylesheet: string | null` — Feuille de l'application chargée APRÈS celle du framework, ou `null`.
- `readonly providersFirst: boolean` — Les fournisseurs passent-ils avant le formulaire (quand il y en a) ?
- `readonly hero: ILoginPageHero | false | null` — Panneau d'illustration : `null` = vitrine Nodefony, `false` = marque seule, sinon le contenu qui la remplace.
- `readonly footer: boolean` — Pied de page : protections de la session et mention du framework.
- `readonly skin: LoginPageSkin` — Habillage : feuille chargée entre celle du framework et celle de l'application.
- `readonly layout: LoginPageLayout` — Mode de mise en page (`loginPage.layout`, sinon celui de l'habillage).
- `readonly password: boolean` — Le formulaire identifiant et mot de passe est-il proposé ?
- `readonly passkey: boolean` — La connexion par passkey est-elle proposée ?
- `readonly previewPicker: boolean` — Sélecteur d'aperçu demandé (`loginPage.previewPicker`) ; la page ne l'affiche qu'en développement.
- `readonly previewHook?: string | null` — Chemin de l'application appelé en `POST` (`{ skin, layout }`) avant chaque rechargement de l'aperçu (`loginPage.previewHook`), ou `null`/absent.
- `readonly providers: readonly ILoginPageProvider[]` — Fournisseurs à proposer, dans l'ordre de la configuration.

#### `ILoginPageHero`

```ts
interface ILoginPageHero
```

Contenu du panneau d'illustration qui REMPLACE la vitrine Nodefony. Texte seul, échappé au rendu : l'image du panneau passe par la feuille de l'application (`--nf-login-hero-image`), jamais par une adresse injectée dans le balisage.

- `readonly heading: string` — Accroche du panneau.
- `readonly text: string | null` — Phrase sous l'accroche, ou `null`.

#### `ILoginPageProvider`

```ts
interface ILoginPageProvider
```

Fournisseur d'identité proposé sur la page de connexion.

- `readonly name: string` — Nom du fournisseur, tel qu'il figure dans l'adresse d'autorisation.
- `readonly label: string` — Libellé affiché sur le bouton.
- `readonly icon: string | null` — Image du bouton (chemin servi par l'application ou URL), ou `null` pour l'icône du framework (marque GitHub, sinon une clé).

#### `ILoginPageSkinSpec`

```ts
interface ILoginPageSkinSpec
```

Ce qu'un habillage impose au gabarit, au-delà de sa feuille.

- `readonly layout: LoginPageLayout` — Mise en page pour laquelle l'habillage est dessiné, sauf `layout` explicite.
- `readonly backdrop: boolean` — Fond de page décoré (motif, image) : le pied passe alors sur une pastille pleine pour rester lisible (`<body data-backdrop>`).

#### `ISessionAuthentication`

```ts
interface ISessionAuthentication
```

Comment une session a été authentifiée.

- `readonly at: number` — Heure de l'authentification, en millisecondes epoch.
- `readonly amr: readonly string[]` — Méthodes utilisées (RFC 8176) ; vide quand un fournisseur a authentifié.

### Types (2)

#### `LoginPageLayout`

```ts
type LoginPageLayout = (typeof LOGIN_PAGE_LAYOUTS)[number]
```

Un mode de mise en page de la page de connexion (`loginPage.layout`).

#### `LoginPageSkin`

```ts
type LoginPageSkin = (typeof LOGIN_PAGE_SKINS)[number]
```

Un habillage de la page de connexion (`loginPage.skin`).

---

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