@ollaid/native-sso 2.8.1 → 2.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/docs/README.md ADDED
@@ -0,0 +1,66 @@
1
+ # Native SSO Docs
2
+
3
+ Version: `2.8.3`
4
+
5
+ Docs courtes et pratiques pour `@ollaid/native-sso`.
6
+
7
+ ## Démarrage
8
+
9
+ 1. Lisez [Quick Start](./1_quick-start.md)
10
+ 2. Vérifiez le contrat backend dans [Backend Contract](./2_backend-contract.md)
11
+ 3. Vérifiez le stockage et la sécurité dans [Storage & Security](./3_storage-security.md)
12
+ 4. Vérifiez les webhooks dans [Webhooks](./4_webhooks.md)
13
+ 5. Si vous utilisez les APIs IAM Account server-to-server, lisez [IAM Account](./5_iam-account.md)
14
+ 6. Si vous utilisez les helpers avancés, lisez [Advanced Services](./6_advanced-services.md)
15
+ 7. Consultez les notes de migration dans [Migration Notes](./7_migration-notes.md)
16
+ 8. Pour la synchro bidirectionnelle des infos profil, lisez [Update Infos](./8_update_infos.md)
17
+ 9. Pour le flux de redirection mot de passe via backend SaaS, lisez [Password Magic Link](./9_password_magic_link.md)
18
+ 10. Pour la redirection après connexion et le flux `needs_access`, lisez [Login Redirect & Access Flow](./10_login-redirect.md)
19
+ 11. Pour la persistance des sessions, le refresh token et la résilience réseau, lisez [Session Refresh & Resilience](./11_session-refresh-resilience.md)
20
+ 12. Pour le détail du flux `needs_access` et du bypass `BYPASS=true`, lisez [Needs Access & Bypass](./12_login_mode.md)
21
+ 13. Pour la vérification finale des fonctionnalités critiques, lisez [Must Have Working](./13_must_have_working.md)
22
+ 14. Pour les variables d'environnement backend IAM SSO, lisez [Backend Env Key](./14_backend_env_key.md)
23
+
24
+ ## Principe
25
+
26
+ - Le package chiffre les données de session au repos dans son storage.
27
+ - Le frontend SaaS ne lit pas le storage directement.
28
+ - Le frontend SaaS demande la session au package via `getSsoSessionSnapshot()`.
29
+ - La déconnexion passe par `logout()`.
30
+ - Les APIs IAM Account (`iamAccountService`) sont server-to-server uniquement.
31
+ - Les helpers avancés (`mobilePasswordService`, `profileChangeService`, `profileMediaService`) sont documentés séparément.
32
+
33
+ ## Checklist SaaS
34
+
35
+ - Fournir `redirectAfterLogin` sur `NativeSSOPage` si vous ne voulez pas rester sur la page SSO après connexion.
36
+ - Fournir `redirectAfterLogout` si vous voulez une sortie vers une page métier.
37
+ - Côté backend, renvoyer `needs_access` quand l'utilisateur est authentifié mais n'a pas encore accès à cette application.
38
+ - Si le SaaS active `BYPASS=true`, le backend peut auto-créer l'accès et finaliser la connexion sans afficher le modal.
39
+ - Ne pas appeler le callback final de redirection tant que `grantAccess()` n'a pas terminé, sauf si `BYPASS=true`.
40
+
41
+ ## Onboarding profil
42
+
43
+ La modal `OnboardingModal` gère deux modes:
44
+
45
+ - `missing`:
46
+ - `name`
47
+ - `image_url`
48
+ - `phone`
49
+ - `email`
50
+ - `address`
51
+ - `town`
52
+ - `country`
53
+ - `edit`:
54
+ - nom complet
55
+ - photo de profil
56
+ - téléphone
57
+ - email
58
+ - adresse
59
+ - ville
60
+ - pays
61
+
62
+ Le mode automatique piloté par `NativeSSOPage` ouvre la modal après le délai configuré si l’un de ces champs est manquant. Le modal reste scrollable à l’intérieur via le conteneur de contenu dédié.
63
+
64
+ Quand vous ouvrez la modal depuis votre SaaS, utilisez `variant="edit"` pour afficher le formulaire complet éditable.
65
+
66
+ Le changement de téléphone ou d’email ouvre un sous-flux OTP dans la même modal, avec une fermeture bloquée tant que le flux est en cours.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ollaid/native-sso",
3
- "version": "2.8.1",
3
+ "version": "2.8.3",
4
4
  "description": "Package NPM fullstack pour l'authentification Native SSO Ollaid - Frontend-First (Link APIs & Refresh support)",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
@@ -14,11 +14,14 @@
14
14
  }
15
15
  },
16
16
  "files": [
17
- "dist"
17
+ "dist",
18
+ "docs",
19
+ "scripts"
18
20
  ],
19
21
  "scripts": {
20
22
  "build": "vite build && tsc --emitDeclarationOnly --declaration --outDir dist",
21
- "dev": "vite build --watch"
23
+ "dev": "vite build --watch",
24
+ "postinstall": "node ./scripts/copy-docs.mjs"
22
25
  },
23
26
  "peerDependencies": {
24
27
  "@capacitor/device": "^7.0.0 || ^8.0.0",
@@ -0,0 +1,36 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import process from 'node:process';
4
+ import { fileURLToPath } from 'node:url';
5
+
6
+ const packageRoot = path.dirname(fileURLToPath(import.meta.url));
7
+ const docsSourceDir = path.resolve(packageRoot, '../docs');
8
+ const projectRoot = process.env.INIT_CWD
9
+ ? path.resolve(process.env.INIT_CWD)
10
+ : process.cwd();
11
+ const targetDir = path.resolve(projectRoot, 'docs/ollaid@sso_package');
12
+
13
+ async function main() {
14
+ let entries;
15
+ try {
16
+ entries = await fs.readdir(docsSourceDir, { withFileTypes: true });
17
+ } catch {
18
+ return;
19
+ }
20
+
21
+ await fs.rm(targetDir, { recursive: true, force: true });
22
+ await fs.mkdir(targetDir, { recursive: true });
23
+
24
+ for (const entry of entries) {
25
+ if (!entry.isFile() || !entry.name.endsWith('.md')) continue;
26
+
27
+ const sourceFile = path.join(docsSourceDir, entry.name);
28
+ const targetFile = path.join(targetDir, entry.name);
29
+ await fs.copyFile(sourceFile, targetFile);
30
+ }
31
+ }
32
+
33
+ main().catch((error) => {
34
+ console.error('[ollaid-native-sso] doc copy failed:', error);
35
+ process.exitCode = 1;
36
+ });