Back to flin
flin

Grants de téléchargement et clés d'accès

Comment FLIN implémente les grants de téléchargement avec limites de temps, compteurs d'utilisation et protection par mot de passe -- transformant le contrôle d'accès aux fichiers d'une fonctionnalité personnalisée en une primitive intégrée au langage.

Juste A. Gnimavo (Thales) & Claude | March 26, 2026 2 min flin
EN/ FR/ ES
flinsecuritydownload-grantsaccess-keysfile-storage

Les URL signées résolvent un problème : l'accès limité dans le temps à un fichier. Mais les applications réelles ont besoin de plus. Un cabinet juridique veut partager un contrat avec un client qui ne peut le télécharger qu'exactement trois fois. Une école veut distribuer des sujets d'examen avec un mot de passe que les étudiants reçoivent en classe.

Le système de grants de téléchargement de FLIN résout cela. Les grants sont des objets de première classe qui enveloppent l'accès aux fichiers avec des restrictions configurables : limites de temps, compteurs d'utilisation, protection par mot de passe et révocation.

Créer des grants en FLIN

flin// Partager un fichier avec des restrictions
route POST "/documents/:id/share" {
    doc = Document.find(params.id)

    // Grant limité dans le temps (24 heures)
    grant = file_grant(doc.file, { expires: 86400 })

    // Grant limité en utilisation (5 téléchargements)
    grant = file_grant(doc.file, { max_uses: 5 })

    // Grant protégé par mot de passe
    grant = file_grant(doc.file, { password: "exam2026" })

    // Restrictions combinées
    grant = file_grant(doc.file, {
        max_uses: 10,
        expires: 86400,
        password: "confidential"
    })

    url = grant_url(grant)
    respond { url: url, grant_id: grant.id }
}

Protection par mot de passe

Les mots de passe des grants sont hachés avec Argon2id avant stockage. Le mot de passe n'est jamais stocké en texte clair. Même si la base de données des grants est compromise, les mots de passe ne peuvent pas être récupérés.

La pile complète de contrôle d'accès

Avec les grants de téléchargement terminés, FLIN offre trois niveaux de contrôle d'accès aux fichiers :

NiveauMécanismeCas d'utilisation
URL publiquefile.urlPhotos de profil, assets publics
URL signéefile_signed_url(file, duration)Accès limité dans le temps
Grant de téléchargementfile_grant(file, options)Limites d'utilisation, mots de passe, révocation

Ceci est la partie 129 de la série « Comment nous avons construit FLIN », documentant comment un CEO à Abidjan et un CTO IA ont conçu et construit un langage de programmation à partir de zéro.

Navigation de la série : - [128] Backends R2 et Google Cloud Storage - [129] Grants de téléchargement et clés d'accès (vous êtes ici) - [130] Stratégies de découpage de texte

Share this article:

Responses

Write a response
0/2000
Loading responses...

Related Articles

Thales & Claude zerosuite

Ça marche, et ce n'est pas fini

Le dirigeant a parcouru lui-même tous les canaux de senndo — cinq canaux, à l'unité et en campagne, l'import, les statistiques, un remboursement, l'API — et tout a répondu. Le fichier de pilotage disait toujours non, et la seule ligne qui bloquait n'était pas du code : c'était un document qui avait discrètement cessé d'être vrai. Quatre affirmations vraies à l'écriture et fausses à la lecture, et les gardes lisibles par une machine qui attrapent désormais chacune de ces formes.

13 min Sep 14, 2026
senndocpaaslaunch-readinessdocumentation +8
Thales & Claude zerosuite

Le navigateur entre les mains de Claude : piloter le Chrome du dirigeant

Claude-in-Chrome permet à une session Claude Code de piloter le vrai navigateur du dirigeant — même profil, mêmes sessions ouvertes. Ce que l'outil fait réellement, pourquoi il vaut mieux que de demander à un humain de cliquer et de rapporter, et où l'humain garde l'avantage. Ancré dans le jour où Claude a conduit un parcours client complet dans la console de production de senndo, messages facturés compris.

9 min Aug 18, 2026
claude-in-chromebrowser-automationclaude-codeclaude-fable-5 +9
Thales & Claude deblo

Le segfault qui n'était pas le nôtre : livrer le tracking du jour de lancement de Déblo la nuit du lancement — analytics conditionnées par l'environnement, attribution native des stores, trois bugs que le compilateur ne pouvait pas voir, et un build à court de mémoire que nous avons diagnostiqué au lieu de le rétablir

Le 1er juillet 2026 — jour de lancement — le risque n'a jamais été le texte. C'était les campagnes payantes qui partaient à l'aveugle. Voici le build-log de la livraison des analytics et de l'attribution d'installation de Déblo sous forme de code, la nuit du lancement : des tags GA4, Meta et LinkedIn conditionnés par l'environnement, qui se déploient sans risque avant même que les comptes publicitaires existent ; une attribution routée par les canaux natifs des stores plutôt que par le pixel web ; un audit adverse qui a attrapé trois bugs que le typecheck et le build passaient tous les deux ; et un déploiement Easypanel qui a segfaulté au premier build — que nous avons prouvé ne pas venir de notre code avant d'en changer une seule ligne.

18 min Jul 1, 2026
deblolaunch-dayclaude-opus-4.8claude-code +26