Frontend completo (Etapas 11-18) e extensões de backend (Etapas 13 e 18)
Adiciona o frontend Next.js em frontend/ (setup, design system, autenticação/tema, layout/navegação, área master, área tenant completa: clientes, produtos, vendas, recebimentos, whatsapp, e-mail, alertas, equipe e perfil). Estende o backend de forma aditiva e autorizada: cookie httpOnly para refresh token (Etapa 13) e CRUD de equipe + edição de perfil do tenant (Etapa 18, módulo src/modules/equipe/ novo e PUT /tenant/perfil). Detalhes completos em Etapas/V2/*. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
import { apiClient } from '@/lib/api/client';
|
||||
import type { UserRole } from '@/lib/auth/jwt';
|
||||
|
||||
/** Tupla `as const` (não `UserRole[]`) para preservar os literais na inferência do `z.enum` (`lib/validators/equipe.ts`). */
|
||||
export const EQUIPE_ROLES = ['tenant_admin', 'vendedor', 'financeiro', 'visualizador'] as const;
|
||||
|
||||
export const EQUIPE_ROLE_LABEL: Record<UserRole, string> = {
|
||||
tenant_admin: 'Administrador',
|
||||
vendedor: 'Vendedor',
|
||||
financeiro: 'Financeiro',
|
||||
visualizador: 'Visualizador',
|
||||
};
|
||||
|
||||
/** Espelha o `select` público de `EquipeService` (`src/modules/equipe/equipe.service.ts`). */
|
||||
export interface EquipeUser {
|
||||
id: string;
|
||||
nome: string;
|
||||
email: string;
|
||||
role: UserRole;
|
||||
ativo: boolean;
|
||||
criado_em: string;
|
||||
}
|
||||
|
||||
/** `senha_provisoria` só aparece nesta resposta, uma única vez, em texto puro. */
|
||||
export interface EquipeUserCreated extends EquipeUser {
|
||||
senha_provisoria: string;
|
||||
}
|
||||
|
||||
/** Espelha `CreateEquipeUserDto`. */
|
||||
export interface CreateEquipeUserInput {
|
||||
nome: string;
|
||||
email: string;
|
||||
role: UserRole;
|
||||
senha?: string;
|
||||
}
|
||||
|
||||
/** Espelha `UpdateEquipeUserDto`. */
|
||||
export interface UpdateEquipeUserInput {
|
||||
role?: UserRole;
|
||||
ativo?: boolean;
|
||||
}
|
||||
|
||||
export function listEquipe() {
|
||||
return apiClient.get<EquipeUser[]>('/tenant/equipe');
|
||||
}
|
||||
|
||||
export function createEquipeUser(input: CreateEquipeUserInput) {
|
||||
return apiClient.post<EquipeUserCreated>('/tenant/equipe', input);
|
||||
}
|
||||
|
||||
export function updateEquipeUser(id: string, input: UpdateEquipeUserInput) {
|
||||
return apiClient.patch<EquipeUser>(`/tenant/equipe/${id}`, input);
|
||||
}
|
||||
Reference in New Issue
Block a user