Deleted older docs
This commit is contained in:
parent
3893d73e5a
commit
67daab33bb
@ -1,39 +0,0 @@
|
|||||||
### Authentification 4NK (iframe + MessageBus)
|
|
||||||
|
|
||||||
Cette application intègre un flux d’authentification 4NK encapsulé dans une `iframe` et orchestré côté client via `MessageBus`.
|
|
||||||
|
|
||||||
### Composants impliqués
|
|
||||||
|
|
||||||
- `components/4nk/AuthModal.tsx`: modal d’auth 4NK, gère l’état d’affichage, le chargement, les erreurs et la progression
|
|
||||||
- `components/4nk/Iframe.tsx` et `lib/4nk/IframeReference.ts`: gestion de l’`iframe` 4NK et de sa référence DOM
|
|
||||||
- `lib/4nk/MessageBus.ts`: protocole de communication `window.postMessage` avec l’iframe
|
|
||||||
- `lib/4nk/UserStore.ts`: stockage des tokens (sessionStorage) et pairingId utilisateur
|
|
||||||
- `lib/4nk/MockService.ts`: implémentations simulées pour le **mode démonstration**
|
|
||||||
|
|
||||||
### Protocole côté client
|
|
||||||
|
|
||||||
Séquence attendue côté UI lors d’une authentification standard :
|
|
||||||
|
|
||||||
1. L’`iframe` se charge et envoie un message `LISTENING`
|
|
||||||
2. Le client envoie `REQUEST_LINK`
|
|
||||||
3. Réception `LINK_ACCEPTED` avec `accessToken` et `refreshToken`
|
|
||||||
4. Le client envoie `GET_PAIRING_ID` pour récupérer l’identifiant d’appairage
|
|
||||||
|
|
||||||
Le `MessageBus` fournit des méthodes utilitaires supplémentaires (`validateToken`, `renewToken`, `getProcesses`, etc.) utilisées par l’espace `/dashboard`.
|
|
||||||
|
|
||||||
### Mode démonstration (mock)
|
|
||||||
|
|
||||||
- Sur `/login`, saisir l’identifiant d’entreprise `1234` active le **mode mock** dans `MessageBus`
|
|
||||||
- Les appels sont alors redirigés vers `MockService` (tokens et données factices), sans dépendre de l’iframe
|
|
||||||
- Le dashboard affiche alors des statistiques et listes récentes simulées
|
|
||||||
|
|
||||||
### Configuration
|
|
||||||
|
|
||||||
- `NEXT_PUBLIC_4NK_IFRAME_URL`: origine de l’iframe (ex. `https://dev.4nk.io`)
|
|
||||||
- Contrainte d’origine: `MessageBus` n’accepte que les événements provenant d’origines 4NK/localhost
|
|
||||||
|
|
||||||
### Comportements principaux
|
|
||||||
|
|
||||||
- Stockage des tokens via `UserStore.connect(accessToken, refreshToken)`
|
|
||||||
- Appairage: `getUserPairingId()` stocke l’ID côté `UserStore`
|
|
||||||
- Vérification en dashboard: `validateToken()` côté 4NK (ou mock) et affichage conditionnel
|
|
||||||
@ -1,42 +0,0 @@
|
|||||||
### Installation, build et exécution
|
|
||||||
|
|
||||||
Ces instructions couvrent l’installation des dépendances, l’exécution en développement et le build de production pour la partie Next.js.
|
|
||||||
|
|
||||||
### Prérequis
|
|
||||||
|
|
||||||
- Node.js 20+ recommandé
|
|
||||||
- Accès réseau pour installer les dépendances NPM
|
|
||||||
|
|
||||||
### Installation des dépendances
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npm ci
|
|
||||||
```
|
|
||||||
|
|
||||||
### Exécution en développement
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npm run dev
|
|
||||||
```
|
|
||||||
|
|
||||||
### Build de production
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npm run build
|
|
||||||
```
|
|
||||||
|
|
||||||
### Démarrage de la production locale
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npm run start
|
|
||||||
```
|
|
||||||
|
|
||||||
### Variables d’environnement utiles
|
|
||||||
|
|
||||||
- `NEXT_PUBLIC_4NK_IFRAME_URL`
|
|
||||||
- SMTP (`SMTP_HOST`, `SMTP_PORT`, `SMTP_SECURE`, `SMTP_USER`, `SMTP_PASSWORD`, `SMTP_FROM`)
|
|
||||||
|
|
||||||
### Notes
|
|
||||||
|
|
||||||
- `next.config.mjs` ignore les erreurs ESLint/TS au build (utile pour la démo)
|
|
||||||
- La présence d’un dossier `src/` + `vite.config.ts` est résiduelle et non utilisée par `npm run` à ce stade
|
|
||||||
@ -1,30 +0,0 @@
|
|||||||
### Dashboard (navigation, état, données mock)
|
|
||||||
|
|
||||||
Le dossier `app/dashboard/` contient le layout et la page principale du tableau de bord. Il s’appuie sur l’auth 4NK et propose un **mode démonstration**.
|
|
||||||
|
|
||||||
### Layout
|
|
||||||
|
|
||||||
- Fichier: `app/dashboard/layout.tsx`
|
|
||||||
- Rôle: structure globale (sidebar, topbar, navigation, déconnexion)
|
|
||||||
- Auth: contrôle l’état authentifié via `UserStore` et `MessageBus`
|
|
||||||
- Mode démo: badge et mentions spécifiques lorsque `MessageBus.isInMockMode()` vaut `true`
|
|
||||||
|
|
||||||
### Page principale
|
|
||||||
|
|
||||||
- Fichier: `app/dashboard/page.tsx`
|
|
||||||
- Rôle: affichage des indicateurs et sections utiles (le chat est en tête de page)
|
|
||||||
- Données: simulées en **mode mock** (statistiques de stockage, dossiers, activités)
|
|
||||||
|
|
||||||
### Navigation
|
|
||||||
|
|
||||||
- Entrées: Tableau de bord, Documents, Dossiers, Recherche, Utilisateurs, Messages, Paramètres
|
|
||||||
- Dépendances: certaines pages peuvent être des squelettes à compléter
|
|
||||||
|
|
||||||
### Points d’attention
|
|
||||||
|
|
||||||
- En mode production, la récupération de données doit passer par `MessageBus` (et non mock)
|
|
||||||
- Les « cartes » Documents/Dossiers/Collaborateurs ont été notées à retirer dans un commentaire pour alléger l’UI
|
|
||||||
- **Chat intégré**: l’interface Messages est intégrée en tête de page (hauteur ~600px)
|
|
||||||
- **Sections retirées**: les blocs « Documents récents » et « Activité récente » ont été supprimés du dashboard
|
|
||||||
- **Ordonnancement**: Chat global « My Work » en premier, puis indicateurs (Stockage permanent, Stockage temporaire, Nouveaux dossiers)
|
|
||||||
- **Menu supprimé**: l’entrée de navigation « Messages » a été retirée de la sidebar; la route `/dashboard/chat` peut subsister sans lien direct
|
|
||||||
@ -1,59 +0,0 @@
|
|||||||
### Aperçu du dépôt
|
|
||||||
|
|
||||||
Ce projet est une application web basée sur Next.js (App Router) avec React et TypeScript. Elle propose un site public (accueil, formation, contact) et un espace authentifié de type « dashboard » intégrant un flux d’authentification 4NK via iframe, avec un mode démonstration activable.
|
|
||||||
|
|
||||||
### Pile technique
|
|
||||||
|
|
||||||
- **Framework**: `next` 15 (App Router dans `app/`)
|
|
||||||
- **Langage**: `typescript` 5
|
|
||||||
- **UI**: `react` 19, composants `shadcn/ui` (via `components/ui`), `lucide-react`
|
|
||||||
- **Styles**: `tailwindcss` 4, fichiers dans `styles/` et `app/globals.css`
|
|
||||||
- **Formulaires/Validation**: `react-hook-form` et `zod` (validation côté serveur dans les actions)
|
|
||||||
- **Emailing**: `nodemailer` (configuration SMTP via variables d’environnement)
|
|
||||||
- **Outils 4NK**: `lib/4nk` (MessageBus, UserStore, MockService, EventBus)
|
|
||||||
- **Divers**: `postcss`, `autoprefixer`, `date-fns`, `uuid`
|
|
||||||
|
|
||||||
### Structure principale
|
|
||||||
|
|
||||||
- `app/`
|
|
||||||
- `page.tsx`: page d’accueil publique (sections produit, sécurité, tarifs, liens vers formation, login)
|
|
||||||
- `layout.tsx`: layout racine de l’app (police, métadonnées, `globals.css`)
|
|
||||||
- `contact/page.tsx`: formulaire de contact (client) + action serveur `app/actions/contact.ts`
|
|
||||||
- `formation/page.tsx`: page formations (CTA vers devis); `formation/devis` (présent en dossier) si implémenté
|
|
||||||
- `login/page.tsx`: écran de login (auth 4NK via modal + mode démo)
|
|
||||||
- `dashboard/`: layout + pages (mock data en mode démo)
|
|
||||||
- `actions/`: actions serveur pour `contact` et `formation`
|
|
||||||
- `components/`
|
|
||||||
- `ui/`: primitives UI (boutons, cards, inputs, etc.)
|
|
||||||
- `4nk/`: composants spécifiques 4NK (`AuthModal`, `Iframe`, `DebugInfo` si utilisé)
|
|
||||||
- `lib/`
|
|
||||||
- `email.ts`: fonctions d’envoi d’emails (contact, formation)
|
|
||||||
- `4nk/`: bus de messages, stockage utilisateur, services mock
|
|
||||||
- `public/`: assets (logos, placeholders)
|
|
||||||
- `styles/`: styles globaux
|
|
||||||
- `next.config.mjs`: configuration Next (build sans bloquer sur ESLint/TS, images non optimisées)
|
|
||||||
- `tsconfig.json`: configuration TypeScript
|
|
||||||
- `package.json`: scripts Next (`dev`, `build`, `start`, `lint`) et dépendances
|
|
||||||
- `vite.config.ts` et `src/`: présence d’un squelette Vite non référencé par les scripts NPM (probablement résiduel)
|
|
||||||
|
|
||||||
### Fonctionnalités clés
|
|
||||||
|
|
||||||
- **Site public**: présentation du produit DocV, références, offre tarifaire, formations
|
|
||||||
- **Formulaire de contact**: envoi d’un email structuré via `nodemailer` (action serveur `submitContactForm`)
|
|
||||||
- **Demande de devis formation**: envoi d’un email structuré via `nodemailer` (action serveur `submitFormationForm`)
|
|
||||||
- **Authentification 4NK**:
|
|
||||||
- Modal d’authentification intégrant une `iframe` 4NK
|
|
||||||
- Protocole côté client via `MessageBus` (LISTENING → REQUEST_LINK → LINK_ACCEPTED → GET_PAIRING_ID)
|
|
||||||
- **Mode démonstration**: saisir `1234` comme identifiant d’entreprise sur `/login` active le mock local
|
|
||||||
- **Dashboard**: statistiques et listes « récentes » simulées en mode démo, navigation latérale, vérification token en mode non-mock
|
|
||||||
|
|
||||||
### Variables d’environnement importantes
|
|
||||||
|
|
||||||
- SMTP: `SMTP_HOST`, `SMTP_PORT`, `SMTP_SECURE`, `SMTP_USER`, `SMTP_PASSWORD`, `SMTP_FROM`
|
|
||||||
- Auth 4NK (UI): `NEXT_PUBLIC_4NK_IFRAME_URL` (ex. `https://dev.4nk.io`)
|
|
||||||
|
|
||||||
### Points d’attention
|
|
||||||
|
|
||||||
- `next.config.mjs` désactive les erreurs ESLint/TS au build (utile pour démo, à challenger pour la prod)
|
|
||||||
- Le dossier `src/` et `vite.config.ts` semblent non utilisés par les scripts; valider leur pertinence
|
|
||||||
- Les envois d’emails exigent des variables d’environnement valides côté serveur (build/exec)
|
|
||||||
@ -1,32 +0,0 @@
|
|||||||
---
|
|
||||||
title: Invitations utilisateurs (passphrase)
|
|
||||||
---
|
|
||||||
|
|
||||||
### Principe
|
|
||||||
|
|
||||||
- **Composition**: 4 mots français « existants » + **code** aléatoire de 6 caractères.
|
|
||||||
- **Rôle**: obligatoire (Lecteur, Éditeur, Administrateur).
|
|
||||||
- **Contexte**: titre de document/dossier optionnel.
|
|
||||||
- **Lien**: un lien d’invitation est aussi généré et copiable.
|
|
||||||
- **Email**: champ optionnel pour envoyer l’invitation.
|
|
||||||
|
|
||||||
### Saisie côté invité
|
|
||||||
|
|
||||||
- **Étapes**: saisir les 4 mots dans l’ordre puis le code sur la page de connexion.
|
|
||||||
- **Alternative**: utiliser le **lien** d’invitation.
|
|
||||||
|
|
||||||
### Détails d’implémentation
|
|
||||||
|
|
||||||
- **Génération**: 4 mots uniques issus de la **liste BIP-39 (français)** + code alphanumérique (A..Z, 2..9) de 6 caractères.
|
|
||||||
- **Affichage**: la modale montre la passphrase, un bouton « Copier », le lien et un champ email d’envoi.
|
|
||||||
- **Email**: inclut rôle, contexte (si fourni), passphrase et éventuellement le lien.
|
|
||||||
|
|
||||||
### Sécurité
|
|
||||||
|
|
||||||
- **Standard**: liste standardisée BIP-39 (français), certains mots contiennent des accents.
|
|
||||||
- **Bonnes pratiques**: éviter le partage de la passphrase sur des canaux non sécurisés.
|
|
||||||
|
|
||||||
### Limites connues
|
|
||||||
|
|
||||||
- **Expiration**: pas d’expiration de lien/token par défaut.
|
|
||||||
- **Validation serveur**: non implémentée dans cette version.
|
|
||||||
Loading…
x
Reference in New Issue
Block a user