feat: add user authentication UI to header component
Add login and register dialogs, user dropdown menu with profile link and logout option, and integrate with session management hook. Prevent hydration mismatches by conditionally rendering auth elements after mount. Update package-lock.json with new @esbuild dependencies for build tooling.
This commit is contained in:
1 parent
e641138887
commit
55eebde0ba
55 files changed
+7353
-7
No files matched your search
@@ -0,0 +1,157 @@
|
||||
/**
|
||||
* Seed inicial de servidores do Tibia
|
||||
* Lista completa de servidores oficiais
|
||||
*/
|
||||
|
||||
// Carregar variáveis de ambiente
|
||||
import { config } from "dotenv";
|
||||
import { resolve } from "path";
|
||||
|
||||
// Tentar carregar .env.local primeiro, depois .env
|
||||
config({ path: resolve(process.cwd(), ".env.local") });
|
||||
config({ path: resolve(process.cwd(), ".env") });
|
||||
|
||||
import { query } from "../index";
|
||||
|
||||
export interface ServerSeed {
|
||||
server_name: string;
|
||||
server_type: "pvp" | "no-pvp" | "retro-pvp" | "hardcore-pvp";
|
||||
location: "NA" | "SA" | "EU" | "OC" | "BR";
|
||||
}
|
||||
|
||||
// Lista de servidores oficiais do Tibia (servidores únicos)
|
||||
// Nota: Cada servidor tem um nome único. O tipo pode ser atualizado posteriormente se necessário.
|
||||
const TIBIA_SERVERS: ServerSeed[] = [
|
||||
// Servidores PvP - EU
|
||||
{ server_name: "Antica", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Assombra", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Astera", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Belobra", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Bona", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Calmera", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Celesta", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Concorda", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Cosera", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Damora", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Descubra", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Dia", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Duna", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Elera", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Epoca", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Esmera", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Faluna", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Famosa", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Fera", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Ferobra", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Firmera", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Funera", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Furia", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Garnera", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Gentebra", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Gladera", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Gravitera", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Grimera", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Harmonia", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Honbra", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Impulsa", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Inabra", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Issobra", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Jacabra", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Javibra", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Jonera", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Kalibra", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Kardera", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Kenora", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Libertabra", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Lobera", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Luminera", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Lutabra", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Menera", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Mitigera", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Monza", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Nefera", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Noctera", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Ocera", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Ombra", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Pacera", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Peloria", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Premia", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Pyra", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Quelibra", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Quintera", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Refugia", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Relania", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Secura", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Serdebra", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Solidera", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Talonera", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Tortura", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Unica", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Utobra", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Venebra", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Vita", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Vunira", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Wadira", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Wintera", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Xandebra", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Yonabra", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Zuna", server_type: "pvp", location: "EU" },
|
||||
{ server_name: "Zunera", server_type: "pvp", location: "EU" },
|
||||
|
||||
// Servidores No-PvP - EU
|
||||
{ server_name: "Asteria", server_type: "no-pvp", location: "EU" },
|
||||
{ server_name: "Belluma", server_type: "no-pvp", location: "EU" },
|
||||
{ server_name: "Calva", server_type: "no-pvp", location: "EU" },
|
||||
{ server_name: "Castela", server_type: "no-pvp", location: "EU" },
|
||||
{ server_name: "Collabra", server_type: "no-pvp", location: "EU" },
|
||||
{ server_name: "Estela", server_type: "no-pvp", location: "EU" },
|
||||
];
|
||||
|
||||
export async function seedServers() {
|
||||
console.log("🌱 Iniciando seed de servidores...\n");
|
||||
|
||||
let inserted = 0;
|
||||
let skipped = 0;
|
||||
|
||||
for (const server of TIBIA_SERVERS) {
|
||||
try {
|
||||
// Verificar se já existe
|
||||
const existing = await query<{ server_id: number }>(
|
||||
"SELECT server_id FROM servers WHERE server_name = $1",
|
||||
[server.server_name]
|
||||
);
|
||||
|
||||
if (existing.rows.length > 0) {
|
||||
skipped++;
|
||||
continue;
|
||||
}
|
||||
|
||||
// Inserir servidor
|
||||
await query(
|
||||
`INSERT INTO servers (server_name, server_type, location, is_active)
|
||||
VALUES ($1, $2, $3, $4)`,
|
||||
[server.server_name, server.server_type, server.location, true]
|
||||
);
|
||||
|
||||
inserted++;
|
||||
} catch (error) {
|
||||
console.error(`❌ Erro ao inserir servidor ${server.server_name}:`, error);
|
||||
}
|
||||
}
|
||||
|
||||
console.log(`✅ Seed concluído: ${inserted} servidores inseridos, ${skipped} já existiam\n`);
|
||||
}
|
||||
|
||||
// Se executado diretamente
|
||||
if (require.main === module) {
|
||||
seedServers()
|
||||
.then(() => {
|
||||
console.log("🎉 Seed finalizado com sucesso!");
|
||||
process.exit(0);
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error("❌ Erro fatal no seed:", error);
|
||||
process.exit(1);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user