fix: ajustes de provisioning e layout nas empresas

This commit is contained in:
Esdras Renan 2025-10-15 23:49:19 -03:00
parent ce6c8fdb3a
commit 70fdd8deb8

View file

@ -1,3 +1,4 @@
import { randomBytes } from "crypto"
import { ConvexHttpClient } from "convex/browser" import { ConvexHttpClient } from "convex/browser"
import { Prisma } from "@prisma/client" import { Prisma } from "@prisma/client"
@ -31,7 +32,7 @@ function extractSecret(request: Request, url: URL): string | null {
return null return null
} }
async function ensureConvexCompany(params: { tenantId: string; slug: string; name: string }) { async function ensureConvexCompany(params: { tenantId: string; slug: string; name: string; provisioningCode: string }) {
if (!env.NEXT_PUBLIC_CONVEX_URL) { if (!env.NEXT_PUBLIC_CONVEX_URL) {
throw new Error("Convex não configurado") throw new Error("Convex não configurado")
} }
@ -147,6 +148,8 @@ export async function POST(request: Request) {
where: { tenantId, slug: normalizedSlug }, where: { tenantId, slug: normalizedSlug },
}) })
const provisioningCode = existing?.provisioningCode ?? randomBytes(32).toString("hex")
const company = const company =
existing ?? existing ??
(await prisma.company.create({ (await prisma.company.create({
@ -154,10 +157,16 @@ export async function POST(request: Request) {
tenantId, tenantId,
name, name,
slug: normalizedSlug, slug: normalizedSlug,
provisioningCode,
}, },
})) }))
await ensureConvexCompany({ tenantId, slug: company.slug, name: company.name }) await ensureConvexCompany({
tenantId,
slug: company.slug,
name: company.name,
provisioningCode: company.provisioningCode,
})
return jsonWithCors( return jsonWithCors(
{ {
@ -179,7 +188,12 @@ export async function POST(request: Request) {
try { try {
const fallback = await prisma.company.findFirst({ where: { tenantId, slug: normalizedSlug } }) const fallback = await prisma.company.findFirst({ where: { tenantId, slug: normalizedSlug } })
if (fallback) { if (fallback) {
await ensureConvexCompany({ tenantId, slug: fallback.slug, name: fallback.name }) await ensureConvexCompany({
tenantId,
slug: fallback.slug,
name: fallback.name,
provisioningCode: fallback.provisioningCode,
})
return jsonWithCors( return jsonWithCors(
{ {
company: { company: {