fix: Superhuman sync solo agencia — mensaje claro y botón oculto a cliente

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
4Ventures
2026-09-28 18:05:17 +02:00
parent c0707ffc1b
commit 990915a051
4 changed files with 33 additions and 15 deletions

View File

@@ -20,7 +20,15 @@ async function requireAgency() {
data: { user }, data: { user },
} = await supabase.auth.getUser(); } = await supabase.auth.getUser();
if (!user || !isAgencyRole(userRole(user))) { if (!user || !isAgencyRole(userRole(user))) {
return { error: NextResponse.json({ error: 'Forbidden' }, { status: 403 }) }; return {
error: NextResponse.json(
{
error:
'Forbidden: sincronizar Superhuman requiere rol agencia (admin/team).',
},
{ status: 403 }
),
};
} }
if (!superhumanConfigured()) { if (!superhumanConfigured()) {
return { return {

View File

@@ -74,6 +74,7 @@ export async function GET() {
portfolioWide: false, portfolioWide: false,
tenantId, tenantId,
entries, entries,
isAgency: agency,
}); });
} }

View File

@@ -33,6 +33,7 @@ type Payload = {
tenantId?: string; tenantId?: string;
hint?: string; hint?: string;
entries: Entry[]; entries: Entry[];
isAgency?: boolean;
}; };
function typeLabel(t: string) { function typeLabel(t: string) {
@@ -237,6 +238,7 @@ export default function SeguimientoBoard() {
<Send className="w-3.5 h-3.5" /> <Send className="w-3.5 h-3.5" />
{noteBusy ? 'Guardando…' : 'Añadir al seguimiento'} {noteBusy ? 'Guardando…' : 'Añadir al seguimiento'}
</button> </button>
{data.isAgency ? (
<button <button
type="button" type="button"
disabled={syncBusy || !data.tenantId} disabled={syncBusy || !data.tenantId}
@@ -250,6 +252,7 @@ export default function SeguimientoBoard() {
)} )}
Traer notas Superhuman Traer notas Superhuman
</button> </button>
) : null}
{noteMsg ? ( {noteMsg ? (
<p className="text-xs text-emerald-700">{noteMsg}</p> <p className="text-xs text-emerald-700">{noteMsg}</p>
) : null} ) : null}

View File

@@ -97,7 +97,13 @@ export async function middleware(req: NextRequest) {
if (user && role === 'client' && path.startsWith('/api/admin/')) { if (user && role === 'client' && path.startsWith('/api/admin/')) {
return withSecurityHeaders( return withSecurityHeaders(
NextResponse.json({ error: 'Forbidden' }, { status: 403 }) NextResponse.json(
{
error:
'Forbidden: solo usuarios agencia (admin/team) pueden usar esta acción. Entra con marketing@4ventures.es.',
},
{ status: 403 }
)
); );
} }