From 4c325b736c35c0c1e2f876480d1e902de353df71 Mon Sep 17 00:00:00 2001
From: "gpt-engineer-app[bot]"
<159125892+gpt-engineer-app[bot]@users.noreply.github.com>
Date: Thu, 23 Apr 2026 21:00:44 +0000
Subject: [PATCH] Changes
Co-authored-by: domfelipe <53182096+domfelipe@users.noreply.github.com>
---
src/routeTree.gen.ts | 39 ++++++++++++++++++++++++++++-----
src/routes/admin.agente.$id.tsx | 13 +++--------
2 files changed, 37 insertions(+), 15 deletions(-)
diff --git a/src/routeTree.gen.ts b/src/routeTree.gen.ts
index d4b2b3e..e613a8d 100644
--- a/src/routeTree.gen.ts
+++ b/src/routeTree.gen.ts
@@ -31,6 +31,7 @@ import { Route as PainelSkillsIdRouteImport } from './routes/painel.skills.$id'
import { Route as PainelIntegracoesSlugRouteImport } from './routes/painel.integracoes.$slug'
import { Route as PainelCronjobsNovaRouteImport } from './routes/painel.cronjobs.nova'
import { Route as PainelCronjobsIdRouteImport } from './routes/painel.cronjobs.$id'
+import { Route as AdminAgenteIdRouteImport } from './routes/admin.agente.$id'
const SignupRoute = SignupRouteImport.update({
id: '/signup',
@@ -142,10 +143,15 @@ const PainelCronjobsIdRoute = PainelCronjobsIdRouteImport.update({
path: '/cronjobs/$id',
getParentRoute: () => PainelRoute,
} as any)
+const AdminAgenteIdRoute = AdminAgenteIdRouteImport.update({
+ id: '/agente/$id',
+ path: '/agente/$id',
+ getParentRoute: () => AdminRoute,
+} as any)
export interface FileRoutesByFullPath {
'/': typeof IndexRoute
- '/admin': typeof AdminRoute
+ '/admin': typeof AdminRouteWithChildren
'/login': typeof LoginRoute
'/painel': typeof PainelRouteWithChildren
'/recuperar-senha': typeof RecuperarSenhaRoute
@@ -157,6 +163,7 @@ export interface FileRoutesByFullPath {
'/painel/faturamento': typeof PainelFaturamentoRoute
'/painel/skills': typeof PainelSkillsRouteWithChildren
'/painel/': typeof PainelIndexRoute
+ '/admin/agente/$id': typeof AdminAgenteIdRoute
'/painel/cronjobs/$id': typeof PainelCronjobsIdRoute
'/painel/cronjobs/nova': typeof PainelCronjobsNovaRoute
'/painel/integracoes/$slug': typeof PainelIntegracoesSlugRoute
@@ -169,7 +176,7 @@ export interface FileRoutesByFullPath {
}
export interface FileRoutesByTo {
'/': typeof IndexRoute
- '/admin': typeof AdminRoute
+ '/admin': typeof AdminRouteWithChildren
'/login': typeof LoginRoute
'/recuperar-senha': typeof RecuperarSenhaRoute
'/redefinir-senha': typeof RedefinirSenhaRoute
@@ -179,6 +186,7 @@ export interface FileRoutesByTo {
'/painel/configuracoes': typeof PainelConfiguracoesRoute
'/painel/faturamento': typeof PainelFaturamentoRoute
'/painel': typeof PainelIndexRoute
+ '/admin/agente/$id': typeof AdminAgenteIdRoute
'/painel/cronjobs/$id': typeof PainelCronjobsIdRoute
'/painel/cronjobs/nova': typeof PainelCronjobsNovaRoute
'/painel/integracoes/$slug': typeof PainelIntegracoesSlugRoute
@@ -192,7 +200,7 @@ export interface FileRoutesByTo {
export interface FileRoutesById {
__root__: typeof rootRouteImport
'/': typeof IndexRoute
- '/admin': typeof AdminRoute
+ '/admin': typeof AdminRouteWithChildren
'/login': typeof LoginRoute
'/painel': typeof PainelRouteWithChildren
'/recuperar-senha': typeof RecuperarSenhaRoute
@@ -204,6 +212,7 @@ export interface FileRoutesById {
'/painel/faturamento': typeof PainelFaturamentoRoute
'/painel/skills': typeof PainelSkillsRouteWithChildren
'/painel/': typeof PainelIndexRoute
+ '/admin/agente/$id': typeof AdminAgenteIdRoute
'/painel/cronjobs/$id': typeof PainelCronjobsIdRoute
'/painel/cronjobs/nova': typeof PainelCronjobsNovaRoute
'/painel/integracoes/$slug': typeof PainelIntegracoesSlugRoute
@@ -230,6 +239,7 @@ export interface FileRouteTypes {
| '/painel/faturamento'
| '/painel/skills'
| '/painel/'
+ | '/admin/agente/$id'
| '/painel/cronjobs/$id'
| '/painel/cronjobs/nova'
| '/painel/integracoes/$slug'
@@ -252,6 +262,7 @@ export interface FileRouteTypes {
| '/painel/configuracoes'
| '/painel/faturamento'
| '/painel'
+ | '/admin/agente/$id'
| '/painel/cronjobs/$id'
| '/painel/cronjobs/nova'
| '/painel/integracoes/$slug'
@@ -276,6 +287,7 @@ export interface FileRouteTypes {
| '/painel/faturamento'
| '/painel/skills'
| '/painel/'
+ | '/admin/agente/$id'
| '/painel/cronjobs/$id'
| '/painel/cronjobs/nova'
| '/painel/integracoes/$slug'
@@ -289,7 +301,7 @@ export interface FileRouteTypes {
}
export interface RootRouteChildren {
IndexRoute: typeof IndexRoute
- AdminRoute: typeof AdminRoute
+ AdminRoute: typeof AdminRouteWithChildren
LoginRoute: typeof LoginRoute
PainelRoute: typeof PainelRouteWithChildren
RecuperarSenhaRoute: typeof RecuperarSenhaRoute
@@ -454,9 +466,26 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof PainelCronjobsIdRouteImport
parentRoute: typeof PainelRoute
}
+ '/admin/agente/$id': {
+ id: '/admin/agente/$id'
+ path: '/agente/$id'
+ fullPath: '/admin/agente/$id'
+ preLoaderRoute: typeof AdminAgenteIdRouteImport
+ parentRoute: typeof AdminRoute
+ }
}
}
+interface AdminRouteChildren {
+ AdminAgenteIdRoute: typeof AdminAgenteIdRoute
+}
+
+const AdminRouteChildren: AdminRouteChildren = {
+ AdminAgenteIdRoute: AdminAgenteIdRoute,
+}
+
+const AdminRouteWithChildren = AdminRoute._addFileChildren(AdminRouteChildren)
+
interface PainelSkillsRouteChildren {
PainelSkillsIdRoute: typeof PainelSkillsIdRoute
PainelSkillsNovaRoute: typeof PainelSkillsNovaRoute
@@ -506,7 +535,7 @@ const PainelRouteWithChildren =
const rootRouteChildren: RootRouteChildren = {
IndexRoute: IndexRoute,
- AdminRoute: AdminRoute,
+ AdminRoute: AdminRouteWithChildren,
LoginRoute: LoginRoute,
PainelRoute: PainelRouteWithChildren,
RecuperarSenhaRoute: RecuperarSenhaRoute,
diff --git a/src/routes/admin.agente.$id.tsx b/src/routes/admin.agente.$id.tsx
index 2f268cd..7bab235 100644
--- a/src/routes/admin.agente.$id.tsx
+++ b/src/routes/admin.agente.$id.tsx
@@ -117,14 +117,8 @@ function AgentDetailPage() {
? d.subscription.find((s: { plans: unknown }) => s.plans) ?? d.subscription[0] ?? null
: d.subscription;
- // Buscar email via auth (admin)
- let userEmail: string | null = null;
- try {
- const { data: u } = await supabase.auth.admin.getUserById(d.user_id);
- userEmail = u?.user?.email ?? null;
- } catch {
- // Sem permissão admin no client — ignorar
- }
+ // Email não é acessível via client (RLS) — admin pode ver no Railway/Telegram
+ const userEmail: string | null = null;
return { ...d, profile, subscription, user_email: userEmail } as AgentDetail;
},
@@ -487,8 +481,7 @@ function Field({ label, value }: { label: string; value: string }) {
function StatusBadge({ status }: { status: string }) {
if (status === "active") return Ativo;
- if (status === "provisioning")
- return Provisionando;
+ if (status === "provisioning") return Provisionando;
if (status === "suspended") return Suspenso;
if (status === "error") return Erro;
return {status};