55 lines
2.3 KiB
SQL
55 lines
2.3 KiB
SQL
-- Migration: Add authentication tables
|
|
-- Date: 2026-02-19
|
|
-- Description: Adds users, sessions, and login_attempts tables for authentication
|
|
|
|
-- Create users table
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
username VARCHAR(50) UNIQUE NOT NULL,
|
|
email VARCHAR(100) UNIQUE NOT NULL,
|
|
password_hash VARCHAR(255) NOT NULL,
|
|
role ENUM('admin', 'guest') DEFAULT 'guest',
|
|
is_active BOOLEAN DEFAULT 1,
|
|
last_login TIMESTAMP NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
INDEX idx_username (username),
|
|
INDEX idx_email (email),
|
|
INDEX idx_role (role)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- Create sessions table
|
|
CREATE TABLE IF NOT EXISTS sessions (
|
|
id VARCHAR(128) PRIMARY KEY,
|
|
user_id INT NOT NULL,
|
|
ip_address VARCHAR(45),
|
|
user_agent VARCHAR(255),
|
|
last_activity TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
INDEX idx_user_id (user_id),
|
|
INDEX idx_last_activity (last_activity)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- Create login_attempts table
|
|
CREATE TABLE IF NOT EXISTS login_attempts (
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
username VARCHAR(50),
|
|
ip_address VARCHAR(45),
|
|
success BOOLEAN DEFAULT 0,
|
|
attempted_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX idx_username (username),
|
|
INDEX idx_ip_address (ip_address),
|
|
INDEX idx_attempted_at (attempted_at)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- Insert default admin user (password: Admin@2026!)
|
|
-- Password hash generated with: password_hash('Admin@2026!', PASSWORD_BCRYPT)
|
|
INSERT INTO users (username, email, password_hash, role, is_active) VALUES
|
|
('admin', 'admin@telvero.nl', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'admin', 1);
|
|
|
|
-- Insert default guest user (password: Guest@2026!)
|
|
-- Password hash generated with: password_hash('Guest@2026!', PASSWORD_BCRYPT)
|
|
INSERT INTO users (username, email, password_hash, role, is_active) VALUES
|
|
('guest', 'guest@telvero.nl', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'guest', 1);
|