Files
PANEL_BASES_ANEXO24/database/schema.sql
ernestohc21 5fa97105c9 feat: improved sidebar UI with larger icons and user info in footer
- Increased all sidebar navigation icons from text-sm to text-xl for better visibility
- Moved user information and logout button from header to sidebar footer
- Added user avatar with name and email in expanded sidebar state
- Collapsed sidebar shows avatar icon and logout icon button stacked vertically
- Simplified header by removing user badge and logout button
- Added version info (v1.0.0) in sidebar footer
- Improved responsive design for both collapsed and expanded states
2026-02-19 12:08:56 -06:00

67 lines
2.6 KiB
SQL

-- Schema para sistema de usuarios y permisos
-- Ejecutar en PostgreSQL (base de datos CONTROLDESK)
-- Tabla de usuarios
CREATE TABLE IF NOT EXISTS usuarios (
id SERIAL PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
nombre_completo VARCHAR(100),
activo BOOLEAN DEFAULT true,
es_admin BOOLEAN DEFAULT false,
fecha_creacion TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
ultimo_acceso TIMESTAMP,
CONSTRAINT chk_username_length CHECK (char_length(username) >= 3)
);
-- Tabla de permisos de usuario a bases de datos
CREATE TABLE IF NOT EXISTS usuario_base_datos (
id SERIAL PRIMARY KEY,
usuario_id INTEGER NOT NULL REFERENCES usuarios(id) ON DELETE CASCADE,
base_datos_nombre VARCHAR(255) NOT NULL, -- Nombre de la base de datos (visible_name)
puede_ver BOOLEAN DEFAULT true,
puede_descargar_backup BOOLEAN DEFAULT false,
puede_restaurar BOOLEAN DEFAULT false,
fecha_asignacion TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE(usuario_id, base_datos_nombre)
);
-- Tabla de sesiones
CREATE TABLE IF NOT EXISTS sesiones (
id SERIAL PRIMARY KEY,
usuario_id INTEGER NOT NULL REFERENCES usuarios(id) ON DELETE CASCADE,
token VARCHAR(255) UNIQUE NOT NULL,
ip_address VARCHAR(50),
user_agent TEXT,
fecha_creacion TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
fecha_expiracion TIMESTAMP NOT NULL,
activa BOOLEAN DEFAULT true
);
-- Índices para mejor rendimiento
CREATE INDEX IF NOT EXISTS idx_usuario_base_datos_usuario ON usuario_base_datos(usuario_id);
CREATE INDEX IF NOT EXISTS idx_usuario_base_datos_nombre ON usuario_base_datos(base_datos_nombre);
CREATE INDEX IF NOT EXISTS idx_usuarios_activo ON usuarios(activo);
CREATE INDEX IF NOT EXISTS idx_sesiones_token ON sesiones(token);
CREATE INDEX IF NOT EXISTS idx_sesiones_usuario ON sesiones(usuario_id);
-- Insertar usuario admin por defecto
-- Password: Admin123!
-- Nota: Este hash es temporal, debes cambiarlo después del primer inicio de sesión
INSERT INTO usuarios (username, email, password_hash, nombre_completo, es_admin, activo)
VALUES (
'admin',
'admin@aduanasoft.com',
'$2b$10$rKvvkYpNwF5J5K5J5J5J5uX5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X',
'Administrador del Sistema',
true,
true
)
ON CONFLICT (username) DO NOTHING;
-- Comentarios en tablas
COMMENT ON TABLE usuarios IS 'Usuarios del sistema de gestión de bases de datos';
COMMENT ON TABLE usuario_base_datos IS 'Permisos de acceso de usuarios a bases de datos específicas';
COMMENT ON TABLE sesiones IS 'Sesiones activas de usuarios';