mirror of
https://github.com/tips-of-mine/gestion-certificats2.git
synced 2025-06-28 01:18:42 +02:00
55 lines
3.4 KiB
SQL
55 lines
3.4 KiB
SQL
-- Script d'initialisation de la base de données MySQL
|
|
-- Ce script est exécuté automatiquement par le conteneur MySQL au premier démarrage.
|
|
|
|
-- Création de la base de données si elle n'existe pas
|
|
CREATE DATABASE IF NOT EXISTS `cert_gestion` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- Utilisation de la base de données
|
|
USE `cert_gestion`;
|
|
|
|
-- Table pour stocker les informations des utilisateurs
|
|
CREATE TABLE IF NOT EXISTS `users` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`username` VARCHAR(255) UNIQUE NOT NULL, -- Nom d'utilisateur unique
|
|
`password` VARCHAR(255) NOT NULL, -- Mot de passe haché
|
|
`role` ENUM('admin', 'user') DEFAULT 'user', -- Rôle de l'utilisateur (admin ou utilisateur simple)
|
|
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP -- Date de création du compte
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- Table pour stocker les périmètres fonctionnels
|
|
CREATE TABLE IF NOT EXISTS `functional_perimeters` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`name` VARCHAR(255) UNIQUE NOT NULL, -- Nom unique du périmètre fonctionnel
|
|
`intermediate_cert_name` VARCHAR(255) UNIQUE NOT NULL, -- Nom du fichier du certificat intermédiaire associé
|
|
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP -- Date de création du périmètre
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- Table pour stocker les informations sur les certificats
|
|
CREATE TABLE IF NOT EXISTS `certificates` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`name` VARCHAR(255) UNIQUE NOT NULL, -- Nom du fichier du certificat (ex: www.example.com.pem)
|
|
`type` ENUM('root', 'intermediate', 'simple') NOT NULL, -- Type de certificat
|
|
`functional_perimeter_id` INT NULL, -- Clé étrangère vers functional_perimeters (NULL pour le certificat root)
|
|
`expiration_date` DATETIME NOT NULL, -- Date d'expiration du certificat
|
|
`is_revoked` BOOLEAN DEFAULT FALSE, -- Indique si le certificat est révoqué
|
|
`revoked_at` DATETIME NULL, -- Date de révocation si révoqué
|
|
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- Date de création du certificat
|
|
FOREIGN KEY (`functional_perimeter_id`) REFERENCES `functional_perimeters`(`id`) ON DELETE SET NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- Table pour historiser les actions des utilisateurs
|
|
CREATE TABLE IF NOT EXISTS `action_logs` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`user_id` INT NOT NULL, -- ID de l'utilisateur qui a effectué l'action
|
|
`action_type` VARCHAR(50) NOT NULL, -- Type d'action (ex: 'login', 'create_cert', 'revoke_cert', 'create_user')
|
|
`description` TEXT NOT NULL, -- Description détaillée de l'action
|
|
`ip_address` VARCHAR(45) NOT NULL, -- Adresse IP de l'utilisateur
|
|
`action_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- Date et heure de l'action
|
|
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- Note sur l'initialisation du premier administrateur et du certificat root:
|
|
-- La création du premier compte administrateur et du certificat root
|
|
-- sera gérée par l'application PHP au premier lancement pour des raisons de flexibilité et de sécurité.
|
|
-- Le mot de passe de l'administrateur sera haché par l'application PHP.
|