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
This commit is contained in:
66
database/schema.sql
Normal file
66
database/schema.sql
Normal file
@@ -0,0 +1,66 @@
|
||||
-- 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';
|
||||
Reference in New Issue
Block a user