Référence d'API — @nodefony/framework — controller
stable
Documentation › Référence d’API › @nodefony/framework › controller
Générée depuis les déclarations de types publiées de
@nodefony/framework10.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/framework#
import { … } from "@nodefony/framework" — 23 symboles.
Classes (11)#
AdminApiController#
class AdminApiController extends Controller
Controller pont unique du data plane admin (Studio).
static readonly instanceId: string— Identité de l’instance qui répond —NF_INSTANCE_ID(k8s pod, worker) oupiden fallback.constructor(context: ContextType)dispatch(...args: unknown[]): Promise<unknown>— Action générique appelée par le Resolver pour toute route admin — DUPLEX (une action, deux transports) : même exécution sur les deux transports, seul l’emballage diffère.
ApiKeyController#
class ApiKeyController extends SecurityApiController
Endpoints HTTP de gestion des clés API personnelles (PAT, P6.12) — console « mes clés » façon GitHub, adaptateurs MINCES au-dessus du service apiKeys (@nodefony/security) :
constructor(context: ContextType)create(): Promise<import("@nodefony/http").Http2Response | import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>— Émission : crée une clé pour le porteur courant → token clair (1×).capabilities(): Promise<import("@nodefony/http").Http2Response | import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>— Capacités/contraintes d’émission (plafond, scopes, préfixe, durée par défaut) — alimente le formulaire de création.list(): Promise<import("@nodefony/http").Http2Response | import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>— Liste les clés du porteur courant (vue publique, sans secret).revoke(id: unknown): Promise<import("@nodefony/http").Http2Response | import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>— Révocation : seulement une clé DU porteur courant (sinon 404, anti-énumération).
BenchController#
class BenchController extends Controller
Cible de mesure du pipeline applicatif — un controller ordinaire qui rend un corps figé, et rien d’autre.
constructor(context: ContextType)index(): import("nodefony").MaybePromise<import("@nodefony/http").Http2Response | import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>— Rend le corps figé.probe(): import("nodefony").MaybePromise<import("@nodefony/http").Http2Response | import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>— Dump de la sonde perf in-situ du http-kernel (NF_PERF_PROBE=1) : µs moyens par requête des postes enterScope / new HttpContext / leaveScope.
IssuerMetadataController#
class IssuerMetadataController extends Controller
Les deux documents qui rendent une application Nodefony découvrable comme émetteur de jetons — RFC 8414 :
constructor(context: ContextType)metadata(): Promise<import("@nodefony/http").Http2Response | import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>—GET /.well-known/oauth-authorization-server— métadonnées d’émetteur.jwks(): Promise<import("@nodefony/http").Http2Response | import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>—GET /.well-known/jwks.json— clés publiques de signature.
LoginPageController#
class LoginPageController extends Controller
Page de connexion par défaut (ADR-0015) : gabarit F03 rendu côté serveur, feuille nodefony/login.css, script nodefony/login.js. Aucun front, aucun build côté application.
constructor(context: ContextType)page(): Promise<import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>— Rend la page de connexion.
OAuth2Controller#
class OAuth2Controller extends SecurityApiController
Endpoints HTTP du social login OAuth 2.0 (P6 J9) — adaptateurs MINCES au-dessus du service oauth2 (@nodefony/security) :
constructor(context: ContextType)providers(): import("nodefony").MaybePromise<import("@nodefony/http").Http2Response | import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>— Liste PUBLIQUE des fournisseurs à proposer à l’écran de connexion.authorize(provider: string): Promise<import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>— Démarre le flux : URL d’autorisation + état anti-replay en session, 302.callback(provider: string): Promise<import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>— Validestate, échange lecode, ouvre la session BFF (302).backchannelLogout(provider: string): Promise<import("@nodefony/http").Http2Response | import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>— Canal arrière : le fournisseur demande de fermer les sessions qu’il désigne (OpenID Connect Back-Channel Logout 1.0 §2.5-2.8).
ProtectedResourceMetadataController#
class ProtectedResourceMetadataController extends Controller
Le document qui rend un refus APPRENABLE — RFC 9728.
constructor(context: ContextType)metadata(): Promise<import("@nodefony/http").Http2Response | import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>—GET /.well-known/oauth-protected-resource/<chemin>— RFC 9728 §3.
SessionAuthController#
class SessionAuthController extends SecurityApiController
Endpoints HTTP du flux de session BFF — adaptateurs MINCES au-dessus du service authFlow (@nodefony/security) :
constructor(context: ContextType)login(): Promise<import("@nodefony/http").Http2Response | import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>— Login BFF : credential JSON présenté UNE fois → cookie de session opaque.loginTotp(): Promise<import("@nodefony/http").Http2Response | import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>— Second facteur (TOTP ou code de récupération) après unloginayant répondu202 mfaRequired.logout(): Promise<import("@nodefony/http").Http2Response | import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>— Détruit la session (storage + cookie).me(): Promise<import("@nodefony/http").Http2Response | import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>— Identité de la session courante, re-résolue (rôles frais).
TokenAuthController#
class TokenAuthController extends SecurityApiController
Endpoints HTTP d’émission/rotation de JWT — adaptateurs MINCES au-dessus du service tokenService (@nodefony/security) :
constructor(context: ContextType)token(): Promise<import("@nodefony/http").Http2Response | import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>— Émission : credential présenté → couple access/refresh.refresh(): Promise<import("@nodefony/http").Http2Response | import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>— Rotation : refresh présenté → nouveau couple (ancien révoqué).
TotpController#
class TotpController extends SecurityApiController
Endpoints HTTP self-service 2FA TOTP (P6.17) — console « ma sécurité », adaptateurs MINCES au-dessus du service totp (@nodefony/security) :
constructor(context: ContextType)enroll(): Promise<import("@nodefony/http").Http2Response | import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>— Démarre l’enrôlement : secret + URI otpauth affichés une seule fois.confirm(): Promise<import("@nodefony/http").Http2Response | import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>— Confirme l’enrôlement par un 1ᵉʳ code → active + codes de récupération (1×).disable(): Promise<import("@nodefony/http").Http2Response | import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>— Désactive le 2FA du porteur courant (retire secret + codes).status(): Promise<import("@nodefony/http").Http2Response | import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>— État 2FA du porteur courant (alimente la console « ma sécurité »).
WebAuthnController#
class WebAuthnController extends SecurityApiController
Endpoints HTTP des cérémonies WebAuthn / passkeys (P6 J9) — adaptateurs MINCES au-dessus du service webauthn (@nodefony/security) :
constructor(context: ContextType)status(): import("nodefony").MaybePromise<import("@nodefony/http").Http2Response | import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>— Dit si la connexion par passkey répondra :{ enabled }, toujours200.registerOptions(): Promise<import("@nodefony/http").Http2Response | import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>— Défi d’enregistrement — l’utilisateur connecté ajoute un passkey.registerVerify(): Promise<import("@nodefony/http").Http2Response | import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>— Vérifie la réponse d’enregistrement et persiste le credential.loginOptions(): Promise<import("@nodefony/http").Http2Response | import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>— Défi d’authentification.loginVerify(): Promise<import("@nodefony/http").Http2Response | import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>— Vérifie l’assertion (empreinte) et OUVRE la session BFF.listCredentials(): Promise<import("@nodefony/http").Http2Response | import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>— Liste les passkeys de l’utilisateur courant (console « mes appareils »).removeCredential(id: unknown): Promise<import("@nodefony/http").Http2Response | import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>— Supprime une passkey DU porteur courant (sinon 404 — anti-IDOR/anti-énumération).
Fonctions (12)#
collectProtectedResources#
function collectProtectedResources(container: IServiceScan): readonly IProtectedResourceInput[]
Rassemble ce que TOUS les services du conteneur déclarent protéger.
mountApiKeyRoutes#
function mountApiKeyRoutes(frameworkModule: Module): void
Monte les routes de gestion des clés API — appelé par le module framework à onKernelReady, seulement si le service apiKeys est présent.
mountBenchRoutes#
function mountBenchRoutes(frameworkModule: Module): void
Monte la route de banc — appelée par le module framework, uniquement si NF_BENCH_ROUTE=1.
mountIssuerMetadataRoutes#
function mountIssuerMetadataRoutes(frameworkModule: Module, issuer: string): void
Monte les deux documents d’émetteur — appelé par le module framework à onKernelReady, seulement si tokenService.publishedIssuer() répond.
mountLoginPage#
function mountLoginPage(frameworkModule: Module): void
Monte la page de connexion par défaut quand security la décrit : la route sur loginPage.path, et ses fichiers sous LOGIN_PAGE_ASSETS_BASE.
mountOAuth2Routes#
function mountOAuth2Routes(frameworkModule: Module): void
Monte les routes du social login OAuth — appelé par le module framework à onKernelReady, seulement si le service oauth2 est présent.
mountProtectedResourceRoutes#
function mountProtectedResourceRoutes(frameworkModule: Module, resources: readonly IProtectedResourceInput[]): number
Monte les documents de ressource protégée — appelé par le module framework à onKernelReady, seulement si un publieur déclare au moins une ressource.
mountSessionAuthRoutes#
function mountSessionAuthRoutes(frameworkModule: Module): void
Monte les routes du flux de session BFF — appelé par le module framework à onKernelReady, seulement si le service authFlow est présent.
mountTokenAuthRoutes#
function mountTokenAuthRoutes(frameworkModule: Module): void
Monte les routes d’émission/rotation JWT — appelé par le module framework à onKernelReady, seulement si le service tokenService est présent.
mountTotpRoutes#
function mountTotpRoutes(frameworkModule: Module): void
Monte les routes self-service 2FA — appelé par le module framework à onKernelReady, seulement si le service totp est présent.
mountWebAuthnRoutes#
function mountWebAuthnRoutes(frameworkModule: Module): void
Monte les routes des cérémonies WebAuthn — appelé par le module framework à onKernelReady, seulement si le service webauthn est présent.
protectedResourceRoutePaths#
function protectedResourceRoutePaths(resources: readonly IProtectedResourceInput[]): string[]
Chemins bien connus à monter pour un jeu de ressources déclarées.