@ollaid/native-sso 2.8.2 → 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/10_login-redirect.md +103 -0
- package/docs/11_session-refresh-resilience.md +130 -0
- package/docs/12_login_mode.md +55 -0
- package/docs/13_must_have_working.md +60 -0
- package/docs/14_backend_env_key.md +50 -0
- package/docs/1_quick-start.md +87 -0
- package/docs/2_backend-contract.md +199 -0
- package/docs/3_storage-security.md +54 -0
- package/docs/4_webhooks.md +48 -0
- package/docs/5_iam-account.md +190 -0
- package/docs/6_advanced-services.md +115 -0
- package/docs/7_migration-notes.md +16 -0
- package/docs/8_update_infos.md +139 -0
- package/docs/9_password_magic_link.md +84 -0
- package/docs/README.md +66 -0
- package/package.json +6 -3
- package/scripts/copy-docs.mjs +36 -0
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.
|
|
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
|
+
});
|