Added db permissions models

This commit is contained in:
Alexis
2021-01-02 11:40:05 +01:00
parent 2959d777b7
commit 5cf2c1daa7

View File

@@ -4,7 +4,7 @@ USE auracle;
/* =========== PRIMARY TABLES =========== */
/* PERMISSIONS */
-- ROLES
CREATE TABLE IF NOT EXISTS `role` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
@@ -12,7 +12,14 @@ CREATE TABLE IF NOT EXISTS `role` (
PRIMARY KEY(`id`)
);
/* USERS */
-- PERMISSIONS
CREATE TABLE IF NOT EXISTS `permission` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`slug` VARCHAR(255) NOT NULL,
PRIMARY KEY(`id`)
);
-- USERS
CREATE TABLE IF NOT EXISTS `user` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`uuid` VARCHAR(36) NOT NULL,
@@ -30,7 +37,7 @@ CREATE TABLE IF NOT EXISTS `user` (
FOREIGN KEY(`role_id`) REFERENCES role(`id`)
);
/* SPELLS */
-- SPELLS
CREATE TABLE IF NOT EXISTS `spell` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL DEFAULT "Nom du sort",
@@ -46,7 +53,7 @@ CREATE TABLE IF NOT EXISTS `spell` (
FOREIGN KEY(`author_id`) REFERENCES user(`id`)
);
/* META SCHOOLS */
-- META SCHOOLS
CREATE TABLE IF NOT EXISTS `meta_school` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL DEFAULT "Nom de l'école mère",
@@ -54,7 +61,7 @@ CREATE TABLE IF NOT EXISTS `meta_school` (
PRIMARY KEY (`id`)
);
/* SCHOOLS */
-- SCHOOLS
CREATE TABLE IF NOT EXISTS `school` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL DEFAULT "Nom de l'école",
@@ -64,7 +71,7 @@ CREATE TABLE IF NOT EXISTS `school` (
FOREIGN KEY(`meta_school_id`) REFERENCES meta_school(`id`)
);
/* COMMON INGREDIENTS */
-- COMMON INGREDIENTS
CREATE TABLE IF NOT EXISTS `ingredient` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL DEFAULT "Langue de salamandre",
@@ -72,7 +79,7 @@ CREATE TABLE IF NOT EXISTS `ingredient` (
PRIMARY KEY (`id`)
);
/* COMMON VARIABLES */
-- COMMON VARIABLES
CREATE TABLE IF NOT EXISTS `variable` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`description` VARCHAR(255) NOT NULL DEFAULT "Nombre de créatures affectées",
@@ -81,8 +88,8 @@ CREATE TABLE IF NOT EXISTS `variable` (
/* ==== ASSOCIATION TABLES ==== */
/* SPELLS` SCHOOLS */
/* One spell can have multiple (up to 3) schools */
-- SPELLS' SCHOOLS
-- One spell can have multiple (up to 3) schools
CREATE TABLE IF NOT EXISTS `spell_school` (
`spell_id` INT UNSIGNED NOT NULL,
`school_id` INT UNSIGNED NOT NULL,
@@ -91,8 +98,8 @@ CREATE TABLE IF NOT EXISTS `spell_school` (
FOREIGN KEY(`school_id`) REFERENCES school(`id`)
);
/* SPELLS` VARIABLES */
/* One spell can have multiple (up to 2) variables of cost */
-- SPELLS' VARIABLES
-- One spell can have multiple (up to 2) variables of cost
CREATE TABLE IF NOT EXISTS `spell_variable` (
`spell_id` INT UNSIGNED NOT NULL,
`variable_id` INT UNSIGNED NOT NULL,
@@ -101,8 +108,8 @@ CREATE TABLE IF NOT EXISTS `spell_variable` (
FOREIGN KEY(`variable_id`) REFERENCES variable(`id`)
);
/* SPELLS` VARIABLES */
/* One spell can have multiple ingredients */
-- SPELLS' VARIABLES
-- One spell can have multiple ingredients
CREATE TABLE IF NOT EXISTS `spell_ingredient` (
`spell_id` INT UNSIGNED NOT NULL,
`ingredient_id` INT UNSIGNED NOT NULL,
@@ -111,7 +118,17 @@ CREATE TABLE IF NOT EXISTS `spell_ingredient` (
FOREIGN KEY(`ingredient_id`) REFERENCES ingredient(`id`)
);
/* Ajout d`une nouvelle ligne avant l`insert de description */
-- ROLES' PERMISSIONS
-- One role can have any number of permissions, or none at all
CREATE TABLE IF NOT EXISTS `role_permission` (
`role_id` INT UNSIGNED NOT NULL,
`permission_id` INT UNSIGNED NOT NULL,
PRIMARY KEY (`role_id`, `permission_id`),
FOREIGN KEY(`role_id`) REFERENCES role(`id`),
FOREIGN KEY(`permission_id`) REFERENCES permission(`id`)
);
-- Ajout d`une nouvelle ligne avant l`insert de description
DELIMITER $$
CREATE TRIGGER `multiLine` BEFORE INSERT ON `spell` FOR EACH ROW
BEGIN
@@ -123,13 +140,34 @@ DELIMITER ;
SET NAMES utf8;
USE auracle;
-- PERMISSIONS
-- ROLES
INSERT INTO `role` (name, description) VALUES
("Visiteur", "Utilisateur normal, peut consulter les sorts."),
("Scribe", "Gardiens des écrits, les scribes sont capables de modifier et d'ajouter des sortilèges."),
("Scribe", "Gardiens des écrits, les scribes sont capables de soumettre des sortilèges."),
("Arcanologue", "Maîtres de l'arcane, ils ont le pouvoir et la responsabilité de juger les sortilèges récents et de les supprimer, ou valider."),
("Augure", "Régents des grimoires, ils ont droit d'accès à l'intégralité des informations connues, et pouvoir absolu sur le savoir arcanique.");
-- PERMISSIONS
INSERT INTO `permission` (slug) VALUES
("SUBMIT_SPELLS"),
("APPROVE_SPELLS"),
("MODIFY_SPELLS"),
("DELETE_SPELLS"),
("WARN_USERS"),
("BAN_USERS");
INSERT INTO `role_permission` (role_id, permission_id) VALUES
(2, 1),
(3, 1),
(3, 2),
(3, 3),
(4, 1),
(4, 2),
(4, 3),
(4, 4),
(4, 5),
(4, 6);
-- USERS
INSERT INTO `user` (uuid, name, mail, avatar, gender, register_date, password, role_id, verified, banned) VALUES
("08e5d2cf-3f0b-454f-b03f-504350d6be85", "Izàc", "tymos@ambrose.edu", null, null, "2020-12-27 17:47:02", "$2b$10$8KWGfRmdQ/ya32fROZNrWugXIEOciDaZwLz.3.GzQa5xrJaGF9RP2", 4, 1, 0);
@@ -173,7 +211,7 @@ LOAD DATA INFILE 'C:/temp/auracle_data/variable.csv'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;
/* Insertions de masses */
-- Insertions de masses
DELIMITER $$
CREATE PROCEDURE insertIntoSchoolRange(IN delimiter_start INT, IN delimiter_end INT, IN id_school INT)
BEGIN