Passo 11 completo. Build limpo, AC verificado. O que foi construído no admin-web (localhost:3001): Infraestrutura completa a partir do zero: Tailwind, tRPC client/server, auth por autologin, env.ts, providers /maintenance — cliente de polling com refetchInterval: 5000ms: Header com contador de pedidos abertos + filtros por estado (checkboxes) e área (select) Grid de cards com thumbnail (presigned GET), posto, descrição, reporter + tempo relativo, badge de status OPEN → botão Aceitar (mutation claim) CLAIMED → info "Aceite por X há Ym" + botão Marcar resolvido (dialog com nota opcional) RESOLVED → badge verde + info "Resolvido por X há Ym" Badge no document.title: (N) FieldOps — Manutenção Toggle de notificação sonora via Web Audio API (beep ao detectar novo OPEN)
19 lines
588 B
TypeScript
19 lines
588 B
TypeScript
import { prisma } from '@repo/db';
|
|
import type { SessionUser } from '@repo/api';
|
|
|
|
// v0.1 admin-web auth: AUTH_DEV_AUTOLOGIN=true → always admin@demo.local.
|
|
// No session/cookie mechanism needed for the demo phase.
|
|
export async function resolveUser(): Promise<SessionUser | null> {
|
|
if (process.env['AUTH_DEV_AUTOLOGIN'] !== 'true') return null;
|
|
|
|
const admin = await prisma.user.findFirst({ where: { email: 'admin@demo.local' } });
|
|
if (!admin) return null;
|
|
|
|
return {
|
|
id: admin.id,
|
|
email: admin.email,
|
|
role: admin.role as 'ADMIN',
|
|
tenantId: admin.tenantId,
|
|
};
|
|
}
|