mirror of
https://github.com/felipegcoutinho/openmonetis.git
synced 2026-06-09 23:06:01 +00:00
feat(logo): migrar token Logo.dev para runtime server-side
NEXT_PUBLIC_LOGO_DEV_TOKEN renomeado para LOGO_DEV_TOKEN — lido apenas em runtime no servidor. URL construída nos endpoints /api/logo/mapping e /api/logo/search; cliente nunca recebe o token. Novo server.ts com isLogoDevEnabled() e buildLogoDevUrl(). LogoDevProvider (Context) propaga flag `enabled` para Client Components. Build arg removido do Dockerfile e do workflow docker-publish.yml. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,14 +1,5 @@
|
||||
/**
|
||||
* Logo utilities
|
||||
*
|
||||
* Consolidated from:
|
||||
* - /lib/logo.ts (utility functions)
|
||||
*/
|
||||
|
||||
/**
|
||||
* Normalizes logo path to get just the filename
|
||||
* @param logo - Logo path or URL
|
||||
* @returns Filename only
|
||||
*/
|
||||
export const normalizeLogo = (logo?: string | null) =>
|
||||
logo?.split("/").filter(Boolean).pop() ?? "";
|
||||
@@ -45,13 +36,11 @@ export const deriveNameFromLogo = (logo?: string | null) => {
|
||||
export const toNameKey = (name: string): string => name.trim().toLowerCase();
|
||||
|
||||
// === Logo.dev ===
|
||||
|
||||
export const LOGO_DEV_TOKEN = process.env.NEXT_PUBLIC_LOGO_DEV_TOKEN;
|
||||
|
||||
export function buildLogoDevUrl(domain?: string | null): string | null {
|
||||
if (!LOGO_DEV_TOKEN || !domain) return null;
|
||||
return `https://img.logo.dev/${domain}?token=${LOGO_DEV_TOKEN}&size=64&format=png`;
|
||||
}
|
||||
//
|
||||
// A construção de URLs e a leitura do token acontecem server-side em
|
||||
// `./server.ts`. O cliente consome `logoUrl` pré-construída a partir das
|
||||
// API routes (`/api/logo/mapping` e `/api/logo/search`) e usa o
|
||||
// `LogoDevProvider` para saber se a integração está habilitada.
|
||||
|
||||
export const logoQueryKeys = {
|
||||
mapping: (nameKey: string) => ["logo-mapping", nameKey] as const,
|
||||
|
||||
30
src/shared/lib/logo/server.ts
Normal file
30
src/shared/lib/logo/server.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
/**
|
||||
* Helpers server-only para Logo.dev.
|
||||
*
|
||||
* IMPORTANTE: este módulo lê `process.env.LOGO_DEV_TOKEN`, que não existe
|
||||
* no bundle do cliente. Nunca importe este arquivo de Client Components
|
||||
* — use o `LogoDevProvider` para propagar o estado `enabled` e consuma
|
||||
* `logoUrl` a partir das respostas das API routes.
|
||||
*/
|
||||
function getLogoDevToken(): string | undefined {
|
||||
const token = process.env.LOGO_DEV_TOKEN;
|
||||
return token && token.length > 0 ? token : undefined;
|
||||
}
|
||||
|
||||
/**
|
||||
* Indica se a integração Logo.dev está configurada.
|
||||
* Usado para habilitar o picker e a exibição de logos na UI.
|
||||
*/
|
||||
export function isLogoDevEnabled(): boolean {
|
||||
return getLogoDevToken() !== undefined;
|
||||
}
|
||||
|
||||
/**
|
||||
* Constrói a URL final da imagem Logo.dev com o token aplicado server-side.
|
||||
* Retorna null se o token não estiver configurado ou se o domínio for vazio.
|
||||
*/
|
||||
export function buildLogoDevUrl(domain?: string | null): string | null {
|
||||
const token = getLogoDevToken();
|
||||
if (!token || !domain) return null;
|
||||
return `https://img.logo.dev/${domain}?token=${token}&size=64&format=png`;
|
||||
}
|
||||
Reference in New Issue
Block a user