forlogic-core 1.16.0 → 1.16.1
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/.note/memory/features/import/attachment-strategy.md +18 -0
- package/README.md +2 -1
- package/dist/README.md +115 -112
- package/dist/auth/services/TokenManager.d.ts +5 -0
- package/dist/bin/pull-docs.js +1 -1
- package/dist/components/modules/ModuleAccessGuard.d.ts +16 -0
- package/dist/components/modules/index.d.ts +2 -0
- package/dist/contexts/ModuleContext.d.ts +34 -0
- package/dist/hooks/useModuleAccess.d.ts +60 -0
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/dist/providers/CoreProviders.d.ts +20 -4
- package/dist/qualiex/services/qualiexApi.d.ts +18 -1
- package/dist/setup.d.ts +2 -0
- package/dist/types.d.ts +58 -0
- package/docs/DESIGN_SYSTEM.md +22 -0
- package/package.json +2 -2
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
2
|
import { QueryClient } from '@tanstack/react-query';
|
|
3
|
+
import { ModuleAccessGuardProps } from '../components/modules';
|
|
3
4
|
/**
|
|
4
5
|
* Props for CoreProviders component
|
|
5
6
|
*/
|
|
@@ -13,6 +14,21 @@ export interface CoreProvidersProps {
|
|
|
13
14
|
* If not provided, a default QueryClient will be created
|
|
14
15
|
*/
|
|
15
16
|
queryClient?: QueryClient;
|
|
17
|
+
/**
|
|
18
|
+
* Alias do módulo do projeto consumidor.
|
|
19
|
+
* Usado pelo hook useModuleAccess para verificar automaticamente
|
|
20
|
+
* se o usuário tem acesso ao módulo deste projeto.
|
|
21
|
+
* Quando configurado, o ModuleAccessGuard bloqueia automaticamente
|
|
22
|
+
* o acesso caso o usuário não tenha permissão.
|
|
23
|
+
*
|
|
24
|
+
* @example "performance" | "suppliers" | "occurrences" | "audit"
|
|
25
|
+
*/
|
|
26
|
+
moduleAlias?: string;
|
|
27
|
+
/**
|
|
28
|
+
* Props opcionais para o ModuleAccessGuard.
|
|
29
|
+
* Permite configurar módulos contratados, callbacks e URLs.
|
|
30
|
+
*/
|
|
31
|
+
moduleAccessGuardProps?: Omit<ModuleAccessGuardProps, 'children'>;
|
|
16
32
|
}
|
|
17
33
|
/**
|
|
18
34
|
* CoreProviders - Encapsulates all essential providers for forlogic-core applications
|
|
@@ -23,7 +39,7 @@ export interface CoreProvidersProps {
|
|
|
23
39
|
* - QueryClientProvider (data fetching)
|
|
24
40
|
* - AuthProvider (authentication)
|
|
25
41
|
* - LocaleProvider (locale management)
|
|
26
|
-
* -
|
|
42
|
+
* - ModuleProvider (module access configuration)
|
|
27
43
|
*
|
|
28
44
|
* @example
|
|
29
45
|
* ```tsx
|
|
@@ -32,7 +48,7 @@ export interface CoreProvidersProps {
|
|
|
32
48
|
*
|
|
33
49
|
* function App() {
|
|
34
50
|
* return (
|
|
35
|
-
* <CoreProviders>
|
|
51
|
+
* <CoreProviders moduleAlias="performance">
|
|
36
52
|
* <BrowserRouter>
|
|
37
53
|
* <Routes>
|
|
38
54
|
* {/* Your routes here *\/}
|
|
@@ -56,11 +72,11 @@ export interface CoreProvidersProps {
|
|
|
56
72
|
*
|
|
57
73
|
* function App() {
|
|
58
74
|
* return (
|
|
59
|
-
* <CoreProviders queryClient={queryClient}>
|
|
75
|
+
* <CoreProviders queryClient={queryClient} moduleAlias="suppliers">
|
|
60
76
|
* {/* Your app *\/}
|
|
61
77
|
* </CoreProviders>
|
|
62
78
|
* );
|
|
63
79
|
* }
|
|
64
80
|
* ```
|
|
65
81
|
*/
|
|
66
|
-
export declare function CoreProviders({ children, queryClient }: CoreProvidersProps): import("react/jsx-runtime").JSX.Element;
|
|
82
|
+
export declare function CoreProviders({ children, queryClient, moduleAlias, moduleAccessGuardProps }: CoreProvidersProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { QualiexUser } from '../../types';
|
|
1
|
+
import { QualiexUser, Software, UserAssociation } from '../../types';
|
|
2
2
|
declare class QualiexApiService {
|
|
3
3
|
private get baseUrl();
|
|
4
4
|
/**
|
|
@@ -17,6 +17,23 @@ declare class QualiexApiService {
|
|
|
17
17
|
fetchUserById(userId: string, alias: string, companyId: string): Promise<QualiexUser | null>;
|
|
18
18
|
fetchActiveUsersMap(alias: string, companyId: string): Promise<Map<string, QualiexUser>>;
|
|
19
19
|
getUsers(alias: string): Promise<QualiexUser[]>;
|
|
20
|
+
/**
|
|
21
|
+
* Busca a lista de todos os módulos/softwares disponíveis na plataforma.
|
|
22
|
+
* GET /api/common/v1/softwares
|
|
23
|
+
*
|
|
24
|
+
* @param alias - Alias da unidade (usado no header un-alias)
|
|
25
|
+
* @returns Array de Software com id, alias, cores e nomes traduzidos
|
|
26
|
+
*/
|
|
27
|
+
fetchSoftwares(alias: string): Promise<Software[]>;
|
|
28
|
+
/**
|
|
29
|
+
* Busca as associações do usuário (empresas, roles, módulos com acesso).
|
|
30
|
+
* GET /api/common/v1/Users/{userId}/associations
|
|
31
|
+
*
|
|
32
|
+
* @param userId - ID do usuário no Qualiex (subNewId / user.id)
|
|
33
|
+
* @param alias - Alias da unidade (usado no header un-alias)
|
|
34
|
+
* @returns Array de UserAssociation com softwares[], roleId, roleName, etc.
|
|
35
|
+
*/
|
|
36
|
+
fetchUserAssociations(userId: string, alias: string): Promise<UserAssociation[]>;
|
|
20
37
|
}
|
|
21
38
|
export declare const qualiexApi: QualiexApiService;
|
|
22
39
|
export {};
|
package/dist/setup.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ interface QualiexCoreConfig {
|
|
|
6
6
|
};
|
|
7
7
|
theme?: 'light' | 'dark' | 'system';
|
|
8
8
|
queryClient?: QueryClient;
|
|
9
|
+
/** Alias do módulo do projeto consumidor (ex: 'performance', 'suppliers', 'occurrences') */
|
|
10
|
+
moduleAlias?: string;
|
|
9
11
|
}
|
|
10
12
|
export declare function setupQualiexCore(config: QualiexCoreConfig): {
|
|
11
13
|
queryClient: QueryClient;
|
package/dist/types.d.ts
CHANGED
|
@@ -471,6 +471,64 @@ export interface QualiexEnrichmentConfig {
|
|
|
471
471
|
/** Sufixo padrão para campos de username (default: "_username") */
|
|
472
472
|
userUsernameFieldSuffix?: string;
|
|
473
473
|
}
|
|
474
|
+
/**
|
|
475
|
+
* Representa um módulo/software disponível na plataforma Qualiex.
|
|
476
|
+
* Retornado pela API GET /api/common/v1/softwares
|
|
477
|
+
*/
|
|
478
|
+
export interface Software {
|
|
479
|
+
id: number;
|
|
480
|
+
alias: string;
|
|
481
|
+
color: string;
|
|
482
|
+
colorLight: string;
|
|
483
|
+
namePtBr: string;
|
|
484
|
+
nameUs: string;
|
|
485
|
+
nameEs: string;
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* Representa uma associação do usuário com uma empresa/unidade.
|
|
489
|
+
* Retornado pela API GET /api/common/v1/Users/{userId}/associations
|
|
490
|
+
*
|
|
491
|
+
* O array `softwares` contém os IDs dos módulos aos quais o usuário tem acesso.
|
|
492
|
+
* O `roleId` e `roleName` representam o papel do usuário naquela associação.
|
|
493
|
+
*/
|
|
494
|
+
export interface UserAssociation {
|
|
495
|
+
associationId: string;
|
|
496
|
+
userId: string;
|
|
497
|
+
userName: string;
|
|
498
|
+
companyId: string;
|
|
499
|
+
companyName: string;
|
|
500
|
+
companyAlias: string;
|
|
501
|
+
companyPhotoDate?: string;
|
|
502
|
+
language?: string;
|
|
503
|
+
roleId: string;
|
|
504
|
+
roleName: string;
|
|
505
|
+
placeId?: string;
|
|
506
|
+
placeName?: string;
|
|
507
|
+
softwares: number[];
|
|
508
|
+
functionalities: string[];
|
|
509
|
+
isQualitfy?: boolean;
|
|
510
|
+
isMetroex?: boolean;
|
|
511
|
+
}
|
|
512
|
+
/**
|
|
513
|
+
* Resultado do hook useModuleAccess
|
|
514
|
+
*/
|
|
515
|
+
export interface ModuleAccessResult {
|
|
516
|
+
/** Se o usuário tem acesso ao módulo configurado/especificado */
|
|
517
|
+
hasAccess: boolean;
|
|
518
|
+
/** Se os dados ainda estão carregando */
|
|
519
|
+
isLoading: boolean;
|
|
520
|
+
/** Role do usuário na associação atual */
|
|
521
|
+
role: {
|
|
522
|
+
id: string;
|
|
523
|
+
name: string;
|
|
524
|
+
} | null;
|
|
525
|
+
/** Associação completa do usuário para a unidade atual */
|
|
526
|
+
association: UserAssociation | null;
|
|
527
|
+
/** Função para verificar acesso a outro(s) módulo(s) */
|
|
528
|
+
hasAccessTo: (alias: string | string[]) => boolean;
|
|
529
|
+
/** Lista completa de softwares/módulos disponíveis na plataforma */
|
|
530
|
+
softwares: Software[];
|
|
531
|
+
}
|
|
474
532
|
export interface ApiResponse<T = unknown> {
|
|
475
533
|
data: T;
|
|
476
534
|
success: boolean;
|
package/docs/DESIGN_SYSTEM.md
CHANGED
|
@@ -131,6 +131,7 @@ function App() {
|
|
|
131
131
|
- [ErrorBoundary](#errorboundary) - Componente de classe React que captura erros de renderização em componentes filhos, evitando que a aplicação inteira quebre.
|
|
132
132
|
- [Hooks](#hooks) - Hooks utilitários da biblioteca forlogic-core para otimização, dados, formatação e UI. Todos os hooks seguem padrões React e são compatíveis com React Query quando aplicável.
|
|
133
133
|
- [Internacionalização (i18n)](#i18n) - Sistema de internacionalização usando react-i18next com traduções carregadas de um arquivo JSON estático local (lib/i18n/translations.json). Suporta pt-BR, en-US e es-ES com gerenciamento de preferências do usuário.
|
|
134
|
+
- [Controle de Acesso a Módulos](#moduleaccess) - Sistema para verificar e bloquear automaticamente o acesso do usuário a módulos da plataforma Qualiex. Inclui proteção automática de rotas via CoreProviders e hook para verificações programáticas.
|
|
134
135
|
- [Segurança (Vite Config)](#security) - Plugin de segurança para Vite que aplica headers OWASP, CSP configurável, CORS seguro e proteções contra ataques comuns. Configuração centralizada para todos os projetos Forlogic.
|
|
135
136
|
- [Services](#services) - Serviços utilitários da biblioteca forlogic-core para operações CRUD, envio de emails, tratamento de erros e gerenciamento de traduções. Todos os serviços são singletons prontos para uso.
|
|
136
137
|
- [Utilities](#utilities) - Funções utilitárias essenciais exportadas pela biblioteca para manipulação de classes CSS, formatação de datas e valores monetários.
|
|
@@ -11558,6 +11559,27 @@ console.log(format?.description); // "Padrão Brasileiro"
|
|
|
11558
11559
|
|
|
11559
11560
|
---
|
|
11560
11561
|
|
|
11562
|
+
### Controle de Acesso a Módulos
|
|
11563
|
+
|
|
11564
|
+
Sistema para verificar e bloquear automaticamente o acesso do usuário a módulos da plataforma Qualiex. Inclui proteção automática de rotas via CoreProviders e hook para verificações programáticas.
|
|
11565
|
+
|
|
11566
|
+
**Uso:**
|
|
11567
|
+
```tsx
|
|
11568
|
+
present
|
|
11569
|
+
```
|
|
11570
|
+
|
|
11571
|
+
**Exemplos:**
|
|
11572
|
+
|
|
11573
|
+
**Exemplo Interativo:**
|
|
11574
|
+
```tsx
|
|
11575
|
+
// Ver seção de exemplos no arquivo
|
|
11576
|
+
```
|
|
11577
|
+
|
|
11578
|
+
**Acessibilidade:**
|
|
11579
|
+
- Documentação de acessibilidade presente em HTML estruturado
|
|
11580
|
+
|
|
11581
|
+
---
|
|
11582
|
+
|
|
11561
11583
|
### Segurança (Vite Config)
|
|
11562
11584
|
|
|
11563
11585
|
Plugin de segurança para Vite que aplica headers OWASP, CSP configurável, CORS seguro e proteções contra ataques comuns. Configuração centralizada para todos os projetos Forlogic.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "forlogic-core",
|
|
3
|
-
"version": "1.16.
|
|
3
|
+
"version": "1.16.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.esm.js",
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"@radix-ui/react-toggle": "^1.1.9",
|
|
76
76
|
"@radix-ui/react-toggle-group": "^1.1.10",
|
|
77
77
|
"@radix-ui/react-tooltip": "^1.2.7",
|
|
78
|
-
"@supabase/supabase-js": "^2.
|
|
78
|
+
"@supabase/supabase-js": "^2.99.0",
|
|
79
79
|
"@tanstack/react-query": "^5.83.0",
|
|
80
80
|
"@tiptap/extension-color": "^3.14.0",
|
|
81
81
|
"@tiptap/extension-highlight": "^3.14.0",
|