@ollaid/native-sso 1.0.4 → 1.0.7
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/README.md +76 -0
- package/dist/components/AppsLogoSlider.d.ts +2 -1
- package/dist/components/NativeSSOPage.d.ts +1 -17
- package/dist/components/PhoneInput.d.ts +1 -0
- package/dist/index.cjs +384 -90
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +384 -90
- package/dist/index.js.map +1 -1
- package/dist/utils/countries.d.ts +18 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -105,9 +105,79 @@ La page `/auth/sso` gère automatiquement :
|
|
|
105
105
|
| `logoUrl` | `string` | ❌ | URL du logo (remplace le slider) |
|
|
106
106
|
| `hideFooter` | `boolean` | ❌ | Masquer "Propulsé par iam.ollaid.com" |
|
|
107
107
|
| `onOnboardingComplete` | `(data: { image_url?: string; ccphone?: string; phone?: string }) => void` | ❌ | Callback après complétion de l'onboarding |
|
|
108
|
+
| `redirectAfterLogin` | `string` | ❌ | Route vers laquelle rediriger après connexion réussie (ex: `/client/dashboard`). Utilise `window.location.href`. Compatible avec ou sans react-router. |
|
|
109
|
+
| `redirectAfterLogout` | `string` | ❌ | Route vers laquelle rediriger après déconnexion (ex: `/auth/client`). Utilise `window.location.href`. |
|
|
108
110
|
|
|
109
111
|
> **Note :** Le mode `debug` est contrôlé **uniquement** par le backend via la variable d'environnement `IAM_DEBUG` dans le `.env` du SaaS. Il n'y a plus de prop `debug` à passer au composant. Le `DebugPanel` est **réactif** : il apparaît automatiquement après le chargement des credentials si `debug: true` est retourné par le backend.
|
|
110
112
|
|
|
113
|
+
### Redirections automatiques (optionnel)
|
|
114
|
+
|
|
115
|
+
> **Ces props sont entièrement optionnels.** Si vous ne les définissez pas,
|
|
116
|
+
> c'est votre backend SaaS qui gère la redirection après l'exchange — il connaît
|
|
117
|
+
> déjà le `accountType` et peut rediriger l'utilisateur vers la bonne page après
|
|
118
|
+
> avoir sauvegardé le token dans le localStorage.
|
|
119
|
+
|
|
120
|
+
Utilisez ces props uniquement si vous souhaitez que le **composant lui-même**
|
|
121
|
+
déclenche la redirection côté frontend :
|
|
122
|
+
|
|
123
|
+
```tsx
|
|
124
|
+
<NativeSSOPage
|
|
125
|
+
saasApiUrl="https://votre-saas.com/api"
|
|
126
|
+
iamApiUrl="https://identityam.ollaid.com/api"
|
|
127
|
+
configPrefix="iam_client"
|
|
128
|
+
accountType="client"
|
|
129
|
+
redirectAfterLogin="/client/dashboard"
|
|
130
|
+
redirectAfterLogout="/auth/client"
|
|
131
|
+
/>
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**Sans ces props** (usage minimal, le SaaS gère la redirection) :
|
|
135
|
+
|
|
136
|
+
```tsx
|
|
137
|
+
<NativeSSOPage
|
|
138
|
+
saasApiUrl="https://votre-saas.com/api"
|
|
139
|
+
iamApiUrl="https://identityam.ollaid.com/api"
|
|
140
|
+
configPrefix="iam_client"
|
|
141
|
+
accountType="client"
|
|
142
|
+
onLoginSuccess={(token, user) => { /* votre logique */ }}
|
|
143
|
+
/>
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
**Comportement :**
|
|
147
|
+
- Si `redirectAfterLogin` est défini → redirection via `window.location.href` après connexion
|
|
148
|
+
- Si `onLoginSuccess` est aussi défini → le callback est appelé **avant** la redirection
|
|
149
|
+
- Si **aucun** prop de redirection n'est défini → aucune redirection automatique, comportement inchangé
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Déconnexion externe (sans le composant)
|
|
154
|
+
|
|
155
|
+
Quand l'utilisateur se déconnecte **depuis votre SaaS** (ex : bouton logout dans le backoffice), le composant `NativeSSOPage` n'est pas impliqué. Vous devez donc nettoyer manuellement la session SSO pour éviter que le package considère l'utilisateur comme encore connecté.
|
|
156
|
+
|
|
157
|
+
### Utilisation
|
|
158
|
+
|
|
159
|
+
```tsx
|
|
160
|
+
import { clearAuthToken } from '@ollaid/native-sso';
|
|
161
|
+
|
|
162
|
+
const handleLogout = async () => {
|
|
163
|
+
await revokeBackendToken(); // votre logique SaaS (révocation Sanctum, etc.)
|
|
164
|
+
clearAuthToken(); // nettoie les 5 clés localStorage du package
|
|
165
|
+
navigate('/auth/login');
|
|
166
|
+
};
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Clés localStorage nettoyées par `clearAuthToken()`
|
|
170
|
+
|
|
171
|
+
| Clé | Description |
|
|
172
|
+
|-----|-------------|
|
|
173
|
+
| `auth_token` | Token Sanctum actif |
|
|
174
|
+
| `token` | Token legacy |
|
|
175
|
+
| `user` | Objet utilisateur (avec `iam_reference`, `alias_reference`) |
|
|
176
|
+
| `account_type` | Type de compte (`user` ou `client`) |
|
|
177
|
+
| `alias_reference` | Référence de l'alias de connexion |
|
|
178
|
+
|
|
179
|
+
> **Important :** Si vous ne nettoyez pas ces clés, l'utilisateur verra l'écran "Déconnexion" au lieu du formulaire de connexion en revenant sur la page SSO.
|
|
180
|
+
|
|
111
181
|
---
|
|
112
182
|
|
|
113
183
|
## Multi-Tenant (plusieurs applications sur le même backend)
|
|
@@ -136,6 +206,8 @@ Backend SaaS:
|
|
|
136
206
|
iamApiUrl="https://identityam.ollaid.com/api"
|
|
137
207
|
configPrefix="iam"
|
|
138
208
|
accountType="user"
|
|
209
|
+
redirectAfterLogin="/dashboard"
|
|
210
|
+
redirectAfterLogout="/auth/sso"
|
|
139
211
|
/>
|
|
140
212
|
|
|
141
213
|
{/* Page login espace vendeur */}
|
|
@@ -144,6 +216,8 @@ Backend SaaS:
|
|
|
144
216
|
iamApiUrl="https://identityam.ollaid.com/api"
|
|
145
217
|
configPrefix="iam_vendor"
|
|
146
218
|
accountType="client"
|
|
219
|
+
redirectAfterLogin="/vendor/dashboard"
|
|
220
|
+
redirectAfterLogout="/auth/vendor"
|
|
147
221
|
/>
|
|
148
222
|
|
|
149
223
|
{/* Page login admin — même backend, app IAM différente */}
|
|
@@ -152,6 +226,8 @@ Backend SaaS:
|
|
|
152
226
|
iamApiUrl="https://identityam.ollaid.com/api"
|
|
153
227
|
configPrefix="iam_admin"
|
|
154
228
|
accountType="user"
|
|
229
|
+
redirectAfterLogin="/admin/dashboard"
|
|
230
|
+
redirectAfterLogout="/auth/admin"
|
|
155
231
|
/>
|
|
156
232
|
```
|
|
157
233
|
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Apps Logo Slider for @ollaid/native-sso
|
|
3
|
+
* Matches Web SSO badge style: horizontal marquee, small icons, no app names
|
|
3
4
|
*/
|
|
4
5
|
interface AppsLogoSliderProps {
|
|
5
6
|
speed?: 'slow' | 'normal' | 'fast';
|
|
6
7
|
className?: string;
|
|
7
8
|
iamApiUrl?: string;
|
|
8
9
|
}
|
|
9
|
-
export declare function AppsLogoSlider({
|
|
10
|
+
export declare function AppsLogoSlider({ className, iamApiUrl: iamApiUrlProp }: AppsLogoSliderProps): import("react/jsx-runtime").JSX.Element | null;
|
|
10
11
|
export default AppsLogoSlider;
|
|
@@ -2,42 +2,26 @@
|
|
|
2
2
|
* NativeSSOPage — Page autonome complète pour @ollaid/native-sso
|
|
3
3
|
* Design aligné sur /sso/auth (fond primary, card blanche, ShieldCheck branding)
|
|
4
4
|
*
|
|
5
|
-
* @version
|
|
5
|
+
* @version 2.0.0
|
|
6
6
|
*/
|
|
7
7
|
import type { UserInfos } from '../types/native';
|
|
8
8
|
export interface NativeSSOPageProps {
|
|
9
|
-
/** URL du Backend SaaS */
|
|
10
9
|
saasApiUrl: string;
|
|
11
|
-
/** URL du Backend IAM */
|
|
12
10
|
iamApiUrl: string;
|
|
13
|
-
/** Callback après login/signup réussi — reçoit le token et l'utilisateur */
|
|
14
11
|
onLoginSuccess?: (token: string, user: UserInfos) => void;
|
|
15
|
-
/** Callback après logout */
|
|
16
12
|
onLogout?: () => void;
|
|
17
|
-
/** Callback quand l'utilisateur complète l'onboarding (photo/phone) */
|
|
18
13
|
onOnboardingComplete?: (data: {
|
|
19
14
|
image_url?: string;
|
|
20
15
|
ccphone?: string;
|
|
21
16
|
phone?: string;
|
|
22
17
|
}) => void;
|
|
23
|
-
/** Type de compte à persister dans localStorage (défaut: 'user') */
|
|
24
18
|
accountType?: 'user' | 'client';
|
|
25
|
-
/**
|
|
26
|
-
* Préfixe de configuration IAM côté backend (défaut: 'iam').
|
|
27
|
-
* Permet le multi-tenant : 'iam', 'iam_vendor', 'iam_client', 'iam_admin', etc.
|
|
28
|
-
*/
|
|
29
19
|
configPrefix?: string;
|
|
30
|
-
/** Titre personnalisé */
|
|
31
20
|
title?: string;
|
|
32
|
-
/** Description personnalisée */
|
|
33
21
|
description?: string;
|
|
34
|
-
/** Logo URL personnalisé */
|
|
35
22
|
logoUrl?: string;
|
|
36
|
-
/** Masquer le footer "Propulsé par" */
|
|
37
23
|
hideFooter?: boolean;
|
|
38
|
-
/** Route vers laquelle rediriger après un login réussi (via window.location.href) */
|
|
39
24
|
redirectAfterLogin?: string;
|
|
40
|
-
/** Route vers laquelle rediriger après un logout (via window.location.href) */
|
|
41
25
|
redirectAfterLogout?: string;
|
|
42
26
|
}
|
|
43
27
|
export declare function NativeSSOPage({ saasApiUrl, iamApiUrl, onLoginSuccess, onLogout, onOnboardingComplete, accountType, configPrefix, title, description, logoUrl, hideFooter, redirectAfterLogin, redirectAfterLogout, }: NativeSSOPageProps): import("react/jsx-runtime").JSX.Element;
|