@ssplib/react-components 0.0.327 → 0.0.329

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ssplib/react-components",
3
- "version": "0.0.327",
3
+ "version": "0.0.329",
4
4
  "description": "SSP React Components",
5
5
  "author": "Pedro Henrique <sr.hudrick@gmail.com>",
6
6
  "license": "MIT",
package/types/auth.d.ts CHANGED
@@ -1,15 +1,52 @@
1
- import { KeycloakTokenParsed } from 'keycloak-js';
1
+ import { KeycloakLoginOptions, KeycloakLogoutOptions, KeycloakTokenParsed } from 'keycloak-js';
2
+ export type { KeycloakLoginOptions, KeycloakLogoutOptions, KeycloakTokenParsed };
2
3
  export interface User extends KeycloakTokenParsed {
3
4
  token: string | undefined;
4
- roles: any[];
5
+ roles: string[];
5
6
  image?: string;
6
7
  }
8
+ /**
9
+ * Opções customizadas para o login do Keycloak
10
+ * Extende KeycloakLoginOptions com callbacks adicionais
11
+ *
12
+ * Opções nativas do Keycloak incluídas:
13
+ * - `redirectUri`: URI para redirecionar após login
14
+ * - `prompt`: Controla comportamento de prompt ('none' | 'login' | 'consent')
15
+ * - `maxAge`: Tempo máximo desde última autenticação
16
+ * - `loginHint`: Preenche campo de login automaticamente
17
+ * - `idpHint`: Pula para um IdP específico (ex: 'google', 'facebook')
18
+ * - `action`: Ação a executar ('register' para registro)
19
+ * - `locale`: Localidade preferida para o login
20
+ * - `acr`: Authentication Context Class Reference
21
+ * - `scope`: Escopos adicionais a solicitar
22
+ * - `cordovaOptions`: Opções específicas para Cordova
23
+ */
24
+ export interface LoginOptions extends KeycloakLoginOptions {
25
+ /** Callback executado após login bem-sucedido */
26
+ onSuccess?: () => void;
27
+ /** Callback executado em caso de erro no login */
28
+ onError?: (error: Error) => void;
29
+ }
30
+ /**
31
+ * Opções customizadas para o logout do Keycloak
32
+ * Extende KeycloakLogoutOptions com callbacks adicionais
33
+ *
34
+ * Opções nativas do Keycloak incluídas:
35
+ * - `redirectUri`: URI para redirecionar após logout
36
+ * - `logoutMethod`: Método de logout ('GET' | 'POST') - POST para RP-Initiated Logout
37
+ */
38
+ export interface LogoutOptions extends KeycloakLogoutOptions {
39
+ /** Callback executado antes do logout (pode ser async para cleanup) */
40
+ onBeforeLogout?: () => void | Promise<void>;
41
+ /** Callback executado após logout bem-sucedido */
42
+ onSuccess?: () => void;
43
+ }
7
44
  export interface AuthData {
8
45
  isAuth: boolean;
9
46
  user: User | null | undefined;
10
47
  userLoaded: boolean;
11
- login: () => void;
12
- logout: () => void;
48
+ login: (options?: LoginOptions) => void;
49
+ logout: (options?: LogoutOptions) => void;
13
50
  }
14
51
  export interface AuthClaims {
15
52
  sub: string;
@@ -62,11 +99,28 @@ export interface AuthSspToken {
62
99
  sub: string;
63
100
  }
64
101
  export interface AuthReturnData {
102
+ /** Indica se o usuário está autenticado */
65
103
  isAuth: boolean;
104
+ /** Tipo de autenticação */
66
105
  type: 'govbr' | 'ad';
67
- user: User | null | undefined;
106
+ /** Dados do usuário autenticado */
107
+ user: User | null;
108
+ /** Indica se os dados do usuário já foram carregados (loading completo) */
68
109
  userLoaded: boolean;
69
- login: () => void;
110
+ /** Inicia o fluxo de login com opções customizáveis */
111
+ login: (options?: LoginOptions) => void;
112
+ /** Salva dados do usuário vindos de token externo */
70
113
  saveUserData: (token: AuthReturn) => void;
71
- logout: () => void;
114
+ /** Inicia o fluxo de logout com opções customizáveis */
115
+ logout: (options?: LogoutOptions) => void;
116
+ /** Atualiza o token manualmente */
117
+ refreshToken: () => Promise<boolean>;
118
+ /** Verifica se o usuário possui uma role específica */
119
+ hasRole: (role: string) => boolean;
120
+ /** Verifica se o usuário possui todas as roles especificadas */
121
+ hasAllRoles: (roles: string[]) => boolean;
122
+ /** Verifica se o usuário possui pelo menos uma das roles especificadas */
123
+ hasAnyRole: (roles: string[]) => boolean;
124
+ /** Token de acesso atual */
125
+ accessToken: string | undefined;
72
126
  }