schema.sqlite.sql 3.42 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
CREATE TABLE IF NOT EXISTS user
(
    id           INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
    username     VARCHAR(255) DEFAULT NULL,
    email        VARCHAR(255) DEFAULT NULL,
    display_name VARCHAR(64)  DEFAULT NULL,
    password     VARCHAR(128)                      NOT NULL,
    state        SMALLINT     default 1
);
ALTER TABLE user ADD PASSWORD_RESET_TOKEN varchar2(256) DEFAULT NULL;
CREATE UNIQUE INDEX user_unique_username ON user(username);
CREATE UNIQUE INDEX USER_PASSWORD_RESET_TOKEN_UN ON user (PASSWORD_RESET_TOKEN);


CREATE TABLE IF NOT EXISTS user_role (
    id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
    role_id VARCHAR(64) NOT NULL,
    is_default TINYINT(1) NOT NULL DEFAULT 0,
    parent_id INTEGER NULL DEFAULT NULL,
    ldap_filter varchar(255) DEFAULT NULL,

    FOREIGN KEY (parent_id) REFERENCES user_role (id) ON DELETE SET NULL
);
CREATE UNIQUE INDEX role_unique_role_id ON user_role(role_id);
CREATE INDEX role_idx_parent_id ON user_role(parent_id);


CREATE TABLE IF NOT EXISTS user_role_linker (
    user_id INTEGER NOT NULL,
    role_id INTEGER NOT NULL,
    PRIMARY KEY (user_id, role_id),
    FOREIGN KEY (role_id) REFERENCES user_role (id) ON DELETE CASCADE,
    FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE
);
CREATE INDEX user_role_linker_idx_role_id ON user_role_linker(role_id);
CREATE INDEX user_role_linker_idx_user_id ON user_role_linker(user_id);


CREATE TABLE IF NOT EXISTS categorie_privilege (
    id            INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    code          VARCHAR(150) NOT NULL,
    libelle       VARCHAR(200) NOT NULL,
    ordre         INTEGER
);
CREATE UNIQUE INDEX categorie_unique_code ON categorie_privilege(code);


CREATE TABLE IF NOT EXISTS privilege (
    id            INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    categorie_id  INTEGER NOT NULL,
    code          VARCHAR(150) NOT NULL,
    libelle       VARCHAR(200) NOT NULL,
    ordre         INTEGER,
    FOREIGN KEY (categorie_id) REFERENCES categorie_privilege (id) ON DELETE CASCADE
);
CREATE UNIQUE INDEX privilege_unique_code ON privilege(code);


CREATE TABLE IF NOT EXISTS role_privilege (
    role_id       INTEGER NOT NULL,
    privilege_id  INTEGER NOT NULL,
    PRIMARY KEY (role_id,privilege_id),
    FOREIGN KEY (role_id) REFERENCES user_role (id) ON DELETE CASCADE,
    FOREIGN KEY (privilege_id) REFERENCES privilege (id) ON DELETE CASCADE
);
CREATE INDEX idx_role_id on role_privilege(role_id);
CREATE INDEX idx_privilege_id on role_privilege(privilege_id);


-- Données

INSERT INTO user (username, email, display_name, password, state) VALUES
    ('admin', 'admin@mail.fr', 'Administrateur', '$2y$10$GmGzPXsLK5Kts30ZrS9QnOLsNYDgZ62797Kitp4Z1nWHlB1g7DZma', 1); -- password "admin"

INSERT INTO user_role (id, role_id, is_default, parent_id) VALUES
    (1, 'Standard', 1, NULL),
    (2, 'Gestionnaire', 0, 1),
    (3, 'Super-gestionnaire', 0, 2),
    (4, 'Administrateur', 0, 3);

INSERT INTO categorie_privilege (id, code, libelle, ordre) VALUES
    (1, 'droit', 'Gestion des droits', 1);

INSERT INTO privilege (id, categorie_id, code, libelle, ordre) VALUES
    (1, 1, 'role-visualisation', 'Rôles - Visualisation', 1),
    (2, 1, 'role-edition', 'Rôles - Édition', 2),
    (3, 1, 'privilege-visualisation', 'Privilèges - Visualisation', 3),
    (4, 1, 'privilege-edition', 'Privilèges - Édition', 4);

INSERT INTO role_privilege (role_id, privilege_id) VALUES
    (4, 1),
    (4, 2),
    (4, 3),
    (4, 4);