feat: version 2.8.1 -- catalogo de logos de marca en Contraseñas (simple-icons, CC0)

Amplia el selector de icono de una credencial con ~70 logos reales de marcas conocidas
(Google, GitHub, Cloudflare, cPanel, MikroTik, WordPress, etc.), empaquetados localmente
desde el paquete simple-icons (dominio publico) y tree-shakeados por Vite. Se mantiene el
criterio de privacidad ya establecido: ninguna consulta externa de favicon por entrada.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Milton Gonzalez
2026-10-01 14:16:31 -05:00
parent 551ed9b790
commit 8214df62ae
9 changed files with 139 additions and 22 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "project-linkedcorp-backend",
"version": "2.8.0",
"version": "2.8.1",
"private": true,
"type": "module",
"main": "src/server.js",
+18 -2
View File
@@ -11,11 +11,27 @@ import { sendMail } from '../../utils/mailer.js';
const PIN_RE = /^\d{4}$/;
const VAULT_TOKEN_EXPIRES = '30m';
// Catalogo fijo (debe coincidir con el del frontend, ContrasenasPage.jsx#ICONS) -- nunca se
// acepta un valor arbitrario, para no guardar basura ni abrir una via de inyeccion rara.
// Catalogo fijo (debe coincidir con el del frontend: ContrasenasPage.jsx#ICONS y
// frontend/src/data/brandIcons.js#BRAND_ICONS) -- nunca se acepta un valor arbitrario, para no
// guardar basura ni abrir una via de inyeccion rara.
const ICON_KEYS = new Set([
'mail', 'globe', 'server', 'database', 'cloud', 'shield', 'lock', 'wifi',
'card', 'building', 'printer', 'phone', 'key', 'disk', 'router', 'user',
'b_google', 'b_gmail', 'b_googledrive', 'b_googlecloud', 'b_protonmail', 'b_zoho',
'b_github', 'b_gitlab', 'b_digitalocean', 'b_cloudflare', 'b_namecheap', 'b_godaddy',
'b_ovh', 'b_vultr', 'b_netlify', 'b_vercel', 'b_cpanel', 'b_plesk', 'b_webmin',
'b_nginx', 'b_apache', 'b_mysql', 'b_mariadb', 'b_postgresql', 'b_docker',
'b_cisco', 'b_fortinet', 'b_mikrotik', 'b_ubiquiti', 'b_tplink', 'b_openvpn', 'b_wireguard',
'b_pfsense', 'b_opnsense', 'b_qnap', 'b_synology', 'b_nordvpn', 'b_bitdefender',
'b_trendmicro', 'b_avast', 'b_kaspersky',
'b_whatsapp', 'b_telegram', 'b_zoom', 'b_discord', 'b_jitsi',
'b_facebook', 'b_instagram', 'b_x',
'b_paypal', 'b_stripe',
'b_teamviewer', 'b_anydesk',
'b_dropbox', 'b_backblaze', 'b_mega', 'b_veeam', 'b_nextcloud',
'b_bitwarden', 'b_lastpass',
'b_linux', 'b_ubuntu', 'b_apple', 'b_raspberrypi',
'b_wordpress', 'b_mailchimp', 'b_firebase',
]);
function sanitizeIconKey(key) {
return ICON_KEYS.has(key) ? key : null;