39 lines
1.8 KiB
SQL
39 lines
1.8 KiB
SQL
-- Create roles table
|
|
CREATE TABLE IF NOT EXISTS roles (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
name VARCHAR(50) NOT NULL UNIQUE,
|
|
slug VARCHAR(50) NOT NULL UNIQUE,
|
|
permissions TEXT NULL, -- JSON or serialized array of permissions
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- Create users table
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
name VARCHAR(100) NOT NULL,
|
|
email VARCHAR(100) NOT NULL UNIQUE,
|
|
password VARCHAR(255) NOT NULL,
|
|
role_id INT NOT NULL,
|
|
active TINYINT(1) DEFAULT 1,
|
|
last_login DATETIME NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (role_id) REFERENCES roles(id) ON DELETE RESTRICT
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- Seed Roles
|
|
INSERT IGNORE INTO roles (name, slug, permissions) VALUES
|
|
('Administrator', 'admin', '*'),
|
|
('Doctor', 'doctor', '["dashboard", "patients", "visits", "appointments", "home_visits", "reports"]'),
|
|
('Nurse', 'nurse', '["dashboard", "patients", "visits", "queue"]'),
|
|
('Receptionist', 'receptionist', '["dashboard", "patients", "appointments", "queue", "billing"]'),
|
|
('Laboratorial', 'laboratorial', '["dashboard", "laboratory"]'),
|
|
('Radiologic', 'radiologic', '["dashboard", "xray"]');
|
|
|
|
-- Seed Default Admin User (password: admin123)
|
|
-- Using a simple hash for demonstration if PHP's password_hash is not available in SQL,
|
|
-- but ideally we should insert via PHP. For now, I will insert a placeholder and update it via PHP or assume I can use a known hash.
|
|
-- Hash for 'admin123' (bcrypt)
|
|
INSERT IGNORE INTO users (name, email, password, role_id)
|
|
SELECT 'System Admin', 'admin@hospital.com', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', id
|
|
FROM roles WHERE slug = 'admin' LIMIT 1;
|