From 1d9e7078876e604a13adaf9d2547e186df1de54f Mon Sep 17 00:00:00 2001 From: Bertrand Gauthier <bertrand.gauthier@unicaen.fr> Date: Wed, 18 Sep 2019 14:23:45 +0200 Subject: [PATCH] Version avec une bdd postgres dans un service docker --- Dockerfile | 12 +--- README.md | 23 ++++--- composer.json | 12 ++-- composer.lock | 79 ++++++++++----------- config/autoload/global.php | 8 +-- data/.gitignore | 1 + docker-compose.yml | 19 ++++++ docker/db/1-schema.sql | 64 +++++++++++++++++ docker/db/2-data.sql | 30 ++++++++ module/Demo/bin/create_demo_db.sh | 8 --- module/Demo/config/module.config.php | 14 +++- module/Demo/data/db/demo.sqlite | Bin 24576 -> 0 bytes module/Demo/data/demo.sqlite.sql | 98 --------------------------- 13 files changed, 185 insertions(+), 183 deletions(-) create mode 100644 docker/db/1-schema.sql create mode 100644 docker/db/2-data.sql delete mode 100755 module/Demo/bin/create_demo_db.sh delete mode 100755 module/Demo/data/db/demo.sqlite delete mode 100644 module/Demo/data/demo.sqlite.sql diff --git a/Dockerfile b/Dockerfile index 06ad62a..61f7e51 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,3 @@ -########################################################################################### -# -# Image pour le dev. -# -########################################################################################### - ARG PHP_VERSION FROM unicaen-dev-php${PHP_VERSION}-apache @@ -18,11 +12,7 @@ ENV APACHE_CONF_DIR=/etc/apache2 \ ## Installation de packages requis. RUN apt-get update -qq && \ apt-get install -y \ - sqlite3 \ - php${PHP_VERSION}-pdo-sqlite - -RUN pecl install ast && \ - echo "extension=ast.so" > ${PHP_CONF_DIR}/cli/conf.d/ast.ini + php${PHP_VERSION}-pgsql # Nettoyage RUN apt-get autoremove -y && apt-get clean && rm -rf /tmp/* /var/tmp/* diff --git a/README.md b/README.md index 3c82b89..b42359a 100644 --- a/README.md +++ b/README.md @@ -11,20 +11,20 @@ ## Module Demo -Le module démo fournit une base de données de démonstration permettant d'avoir une authentification locale -qui fonctionne. +Le squelette d'application possède un module "démo" qui utilise une base de données PostgreSQL de démonstration +permettant d'avoir une authentification locale qui fonctionne. -Jetez un oeil à la base de données de démo présente dans le module 'Demo' : - - $ docker-compose run skeleton-application sqlite3 module/Demo/data/db/demo.sqlite ".schema" - -Interrogez la table `user` pour vérifier la présence de l'utilisateur local `demo`, exemple : - - $ docker-compose run skeleton-application sqlite3 module/Demo/data/db/demo.sqlite "select * from user;" +Cette base de données est fournie par le service `db` (fichier de config `docker-compose.yml`). +Il y a également un service `adminer` fournissant de quoi explorer la base de données avec l'outil +["Adminer"](https://www.adminer.org) en vous rendant à l'adresse `localhost:8432` et en utilisant les informations + de connexion à la bdd présentes dans le `docker-compose.yml`. ## Configuration du projet -- Renommez `config/autoload/local.php.dist` en `local.php`. +- Renommez `config/autoload/local.php.dist` en `local.php` : +```bash +mv config/autoload/local.php.dist config/autoload/local.php +``` - Copiez dans votre dossier `config/autoload` les fichiers de configuration locaux et globaux `.dist` des bibliothèques utilisées sans leur extension `.dist` : @@ -35,7 +35,8 @@ cp vendor/unicaen/auth/config/unicaen-auth.global.php.dist config/autoload/unica cp vendor/unicaen/auth/config/unicaen-auth.local.php.dist config/autoload/unicaen-auth.local.php ``` -- Le cas échéant, reportez-vous aux docs des modules concernés pour adapter ces fichiers de configuration à vos besoins : +- Le cas échéant, reportez-vous aux docs des modules concernés pour adapter ces fichiers de configuration +à vos besoins : - [unicaen/app](https://git.unicaen.fr/lib/unicaen/app) - [unicaen/auth](https://git.unicaen.fr/lib/unicaen/auth) diff --git a/composer.json b/composer.json index 3c38369..47d81d0 100755 --- a/composer.json +++ b/composer.json @@ -8,14 +8,14 @@ } ], "require": { - "unicaen/app": "dev-zf-3.x", - "unicaen/auth": "dev-zf-3.x", - "unicaen/bjy-authorize": "dev-zf-3.x", - "unicaen/faq": "dev-zf-3.x", - "unicaen/ldap": "dev-zf-3.x" + "unicaen/app": "^3.0", + "unicaen/auth": "^3.0", + "unicaen/bjy-authorize": "^3.0", + "unicaen/faq": "^3.0", + "unicaen/ldap": "^3.0" }, "require-dev": { - "zendframework/zend-test": ">=2.3", + "zendframework/zend-test": "^3.2", "phpunit/phpunit": ">=3.7", "zendframework/zend-developer-tools": ">=1.0" }, diff --git a/composer.lock b/composer.lock index 43d9a74..120ed69 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "472fe5bd83d98e8ce14043b863c18ace", + "content-hash": "a868570eddc575aa0674ec170b0b473f", "packages": [ { "name": "beberlei/assert", @@ -2176,11 +2176,11 @@ }, { "name": "unicaen/app", - "version": "dev-zf-3.x", + "version": "3.0.0", "source": { "type": "git", "url": "https://git.unicaen.fr/lib/unicaen/app.git", - "reference": "f18f3a9ae51144c0bf5dc07b6139fba07314fc6a" + "reference": "fe92dcafbefbfdcdea019ef0c963b8b5efca4037" }, "require": { "beberlei/assert": "^2.9", @@ -2236,22 +2236,22 @@ ] }, "description": "Module de base des applications unicaen", - "time": "2019-09-16T09:49:44+00:00" + "time": "2019-09-16T13:15:55+00:00" }, { "name": "unicaen/auth", - "version": "dev-zf-3.x", + "version": "3.0.1", "source": { "type": "git", "url": "https://git.unicaen.fr/lib/unicaen/auth.git", - "reference": "12c05066041f8c305c1c95ac933ed95eb128401a" + "reference": "433bbe5a7d3f5089cfc390ea5cbef90b9a56186e" }, "require": { - "beberlei/assert": "^2.9", "jasig/phpcas": "^1.3", + "php": "7.3.*", "ramsey/uuid": "^3.7", - "unicaen/app": "dev-zf-3.x", - "unicaen/bjy-authorize": "dev-zf-3.x" + "unicaen/app": "^3.0", + "unicaen/bjy-authorize": "^3.0" }, "require-dev": { "phpunit/phpunit": "^5.6" @@ -2267,19 +2267,19 @@ ] }, "description": "Module d'authentification pour les applications Unicaen", - "time": "2019-09-11T09:05:45+00:00" + "time": "2019-09-18T12:02:04+00:00" }, { "name": "unicaen/bjy-authorize", - "version": "dev-zf-3.x", + "version": "3.0.0", "source": { "type": "git", "url": "https://git.unicaen.fr/lib/unicaen/bjy-authorize.git", - "reference": "790c5fddb1a3a89ed904faa633722c57c5c472f5" + "reference": "9480124324d8b1c6de56cdf27ab687fea2216c84" }, "require": { "doctrine/common": "^2.7", - "php": ">=5.6 || >=7.0", + "php": "7.3.*", "zendframework/zend-cache": "^2.8", "zendframework/zend-eventmanager": "^3.2", "zendframework/zend-http": "^2.10", @@ -2328,24 +2328,23 @@ "zf2", "zfc-user" ], - "time": "2019-03-21T09:05:22+00:00" + "time": "2019-09-18T07:15:38+00:00" }, { "name": "unicaen/faq", - "version": "dev-zf-3.x", + "version": "3.0.0", "source": { "type": "git", "url": "https://git.unicaen.fr/lib/unicaen/faq.git", - "reference": "c6f03783941b0dd0c553a0e01cd84519959550e2" + "reference": "1caeeb64aa47aeaba737e06e221d1b82b380dd46" }, "require": { - "unicaen/app": "dev-zf-3.x" + "unicaen/app": "^3.0" }, "require-dev": { "phpspec/prophecy": "^1.6", "phpunit/phpunit": "^5.6", - "snapshotpl/zf-snap-event-debugger": "1.*", - "zendframework/zend-test": "^2.4 || ^3.0" + "zendframework/zend-test": "^3.0" }, "type": "library", "autoload": { @@ -2357,18 +2356,18 @@ ] }, "description": "Module de foire aux questions", - "time": "2019-03-20T15:37:21+00:00" + "time": "2019-09-18T08:11:53+00:00" }, { "name": "unicaen/ldap", - "version": "dev-zf-3.x", + "version": "3.0.0", "source": { "type": "git", "url": "https://git.unicaen.fr/lib/unicaen/ldap.git", - "reference": "2dca4963d882e9e9ea590a34ed22de3b6d922941" + "reference": "26bcaef4f761087a975139b2d1e54e935869b78c" }, "require": { - "php": "^5.6 || ^7.0", + "php": "7.3.*", "zendframework/zend-config": "^3.2", "zendframework/zend-i18n": "^2.9", "zendframework/zend-ldap": "^2.10", @@ -2380,7 +2379,7 @@ }, "require-dev": { "phpunit/phpunit": ">=3.7", - "zendframework/zend-test": ">=2.2" + "zendframework/zend-test": "^3.2" }, "type": "library", "autoload": { @@ -2394,7 +2393,7 @@ ] }, "description": "Module Ldap des applications Unicaen", - "time": "2019-05-23T13:04:14+00:00" + "time": "2019-09-18T09:15:50+00:00" }, { "name": "zendframework/zend-authentication", @@ -5452,16 +5451,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "7.0.7", + "version": "7.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "7743bbcfff2a907e9ee4a25be13d0f8ec5e73800" + "reference": "aa0d179a13284c7420fc281fc32750e6cc7c9e2f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7743bbcfff2a907e9ee4a25be13d0f8ec5e73800", - "reference": "7743bbcfff2a907e9ee4a25be13d0f8ec5e73800", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/aa0d179a13284c7420fc281fc32750e6cc7c9e2f", + "reference": "aa0d179a13284c7420fc281fc32750e6cc7c9e2f", "shasum": "" }, "require": { @@ -5470,7 +5469,7 @@ "php": "^7.2", "phpunit/php-file-iterator": "^2.0.2", "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^3.1.0", + "phpunit/php-token-stream": "^3.1.1", "sebastian/code-unit-reverse-lookup": "^1.0.1", "sebastian/environment": "^4.2.2", "sebastian/version": "^2.0.1", @@ -5511,7 +5510,7 @@ "testing", "xunit" ], - "time": "2019-07-25T05:31:54+00:00" + "time": "2019-09-17T06:24:36+00:00" }, { "name": "phpunit/php-file-iterator", @@ -5655,16 +5654,16 @@ }, { "name": "phpunit/php-token-stream", - "version": "3.1.0", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "e899757bb3df5ff6e95089132f32cd59aac2220a" + "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e899757bb3df5ff6e95089132f32cd59aac2220a", - "reference": "e899757bb3df5ff6e95089132f32cd59aac2220a", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff", + "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff", "shasum": "" }, "require": { @@ -5700,7 +5699,7 @@ "keywords": [ "tokenizer" ], - "time": "2019-07-25T05:29:42+00:00" + "time": "2019-09-17T06:23:10+00:00" }, { "name": "phpunit/phpunit", @@ -6735,13 +6734,7 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": { - "unicaen/app": 20, - "unicaen/auth": 20, - "unicaen/bjy-authorize": 20, - "unicaen/faq": 20, - "unicaen/ldap": 20 - }, + "stability-flags": [], "prefer-stable": false, "prefer-lowest": false, "platform": [], diff --git a/config/autoload/global.php b/config/autoload/global.php index 2ff1954..823bb91 100755 --- a/config/autoload/global.php +++ b/config/autoload/global.php @@ -1,6 +1,6 @@ <?php -return array( - 'translator' => array( +return [ + 'translator' => [ 'locale' => 'fr_FR', - ), -); + ], +]; diff --git a/data/.gitignore b/data/.gitignore index ae8c28a..d20dcaf 100644 --- a/data/.gitignore +++ b/data/.gitignore @@ -1 +1,2 @@ DoctrineORMModule/ +db/ \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 1d96644..79216a4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -14,3 +14,22 @@ services: volumes: - .:/app working_dir: /app + + db: + image: postgres + restart: always + environment: + POSTGRES_USER: admin + POSTGRES_PASSWORD: admin + POSTGRES_DB: demo + ports: + - 8432:5432 + volumes: + - ./data/db:/var/lib/postgresql/data + - ./docker/db/:/docker-entrypoint-initdb.d/ + + adminer: + image: adminer + restart: always + ports: + - 9080:8080 diff --git a/docker/db/1-schema.sql b/docker/db/1-schema.sql new file mode 100644 index 0000000..4bb92b1 --- /dev/null +++ b/docker/db/1-schema.sql @@ -0,0 +1,64 @@ +CREATE TABLE "user" ( + id BIGSERIAL PRIMARY KEY, + 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 +) ; +CREATE UNIQUE INDEX user_username_unique ON "user" (username); + +alter table "user" add PASSWORD_RESET_TOKEN varchar(256) default null; + +create unique index USER_PASSWORD_RESET_TOKEN_UN on "user" (PASSWORD_RESET_TOKEN); + +CREATE TABLE user_role ( + id BIGSERIAL PRIMARY KEY, + role_id VARCHAR(64) NOT NULL, + is_default SMALLINT NOT NULL DEFAULT 0, + parent_id BIGINT DEFAULT NULL, + ldap_filter varchar(255) DEFAULT NULL, + FOREIGN KEY (parent_id) REFERENCES user_role (id) ON DELETE SET NULL +); +CREATE UNIQUE INDEX user_role_roleid_unique ON user_role (role_id); + + +CREATE TABLE user_role_linker ( + user_id BIGINT NOT NULL, + role_id BIGINT NOT NULL, + PRIMARY KEY (user_id, role_id), + FOREIGN KEY (user_id) REFERENCES "user" (id) ON DELETE CASCADE, + FOREIGN KEY (role_id) REFERENCES user_role (id) ON DELETE CASCADE +); +CREATE UNIQUE INDEX user_role_linker_unique ON user_role_linker (user_id, role_id); + + + + +CREATE TABLE IF NOT EXISTS categorie_privilege ( + id BIGSERIAL PRIMARY KEY, + code VARCHAR(150) NOT NULL, + libelle VARCHAR(200) NOT NULL, + ordre INT +); +CREATE UNIQUE INDEX categorie_privilege_unique ON categorie_privilege (code); + + +CREATE TABLE IF NOT EXISTS privilege ( + id BIGSERIAL PRIMARY KEY, + categorie_id BIGINT NOT NULL, + code VARCHAR(150) NOT NULL, + libelle VARCHAR(200) NOT NULL, + ordre INT, + FOREIGN KEY (categorie_id) REFERENCES categorie_privilege (id) ON DELETE CASCADE +); +CREATE UNIQUE INDEX privilege_unique ON privilege (code); + +CREATE TABLE IF NOT EXISTS role_privilege ( + role_id BIGINT NOT NULL, + privilege_id BIGINT 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 UNIQUE INDEX role_privilege_unique ON role_privilege (role_id, privilege_id); diff --git a/docker/db/2-data.sql b/docker/db/2-data.sql new file mode 100644 index 0000000..c3433d0 --- /dev/null +++ b/docker/db/2-data.sql @@ -0,0 +1,30 @@ + +-- Données + +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); + +INSERT INTO "user" (username, email, display_name, password, state) VALUES + -- utilisateur demo/azerty + ('demo', 'demo@mail.fr', 'Demo Crite', '$2y$10$PxXnVLYnGEzEnfqPqRKJSe9AabocES2H4bBK5VzzJlzuj1rVt7Lwu', 1); + +INSERT INTO user_role_linker(user_id, role_id) +SELECT u.id, r.id FROM "user" u, user_role r WHERE u.username = 'demo' and r.role_id = 'Standard'; diff --git a/module/Demo/bin/create_demo_db.sh b/module/Demo/bin/create_demo_db.sh deleted file mode 100755 index 33ce16f..0000000 --- a/module/Demo/bin/create_demo_db.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -DIR=$(cd `dirname $0` && pwd) -DBPATH=${DIR}/../data/db/demo.sqlite - -sqlite3 ${DBPATH} < ${DIR}/../data/demo.sqlite.sql && \ -chmod 777 ${DBPATH} && \ -chmod 777 `dirname ${DBPATH}` diff --git a/module/Demo/config/module.config.php b/module/Demo/config/module.config.php index 0466979..ae6f72a 100755 --- a/module/Demo/config/module.config.php +++ b/module/Demo/config/module.config.php @@ -3,16 +3,26 @@ namespace Demo; return [ + // + // ATTENTION: config Doctrine à déplacer dans `APP/config/autoload/`. + // 'doctrine' => [ 'connection' => [ 'orm_default' => [ - 'driverClass' => 'Doctrine\DBAL\Driver\PDOSqlite\Driver', + 'driverClass' => \Doctrine\DBAL\Driver\PDOPgSql\Driver::class, 'params' => [ - 'path' => __DIR__ . '/../data/db/demo.sqlite', + 'host' => 'db', // + 'user' => 'admin', // cf. docker-compose.yml + 'password' => 'admin', // + 'dbname' => 'demo', // + 'port' => '5432', + 'charset' => 'utf8', + 'driverOptions' => [1002 => 'SET NAMES utf8'] ], ], ], ], + 'bjyauthorize' => [ 'guards' => [ 'BjyAuthorize\Guard\Controller' => [ diff --git a/module/Demo/data/db/demo.sqlite b/module/Demo/data/db/demo.sqlite deleted file mode 100755 index cede42626ca8e68f5f2e81258866701abacae6d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24576 zcmWFz^vNtqRY=P(%1ta$FlJz3U}R))P*7lCV32@f1}G3@U|?W@vOyFhh#-I^81z`3 zSQ!`?n3+F<l!`F_X8s0Yg1Do2Gz3ONfZid%$H&0Hz`@DDz`)MJ%fP_E$h?$+c`3bJ zF>2pv2#kgRQ6Uh?$jKn8D%!}($&iwon-9Vcxrv!MdTB*2sk!+oMwKdtCMtmjZebNB zJ{HBsj_C!)IleAoMkNKM8D&16MirTrSwSwYiP?dX$-br;$st9hW=T;Vg@)ds{LjLC zkb(Il^G)Vc%m;~b�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 A$N&HU diff --git a/module/Demo/data/demo.sqlite.sql b/module/Demo/data/demo.sqlite.sql deleted file mode 100644 index 7de5346..0000000 --- a/module/Demo/data/demo.sqlite.sql +++ /dev/null @@ -1,98 +0,0 @@ -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 varchar(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_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); - -INSERT INTO user (username, email, display_name, password, state) VALUES - -- utilisateur demo/azerty - ('demo', 'demo@mail.fr', 'Demo', '$2y$10$PxXnVLYnGEzEnfqPqRKJSe9AabocES2H4bBK5VzzJlzuj1rVt7Lwu', 1); - -INSERT INTO user_role_linker(user_id, role_id) -SELECT u.id, r.id FROM user u, user_role r WHERE u.username = 'demo' and r.role_id = 'Standard'; -- GitLab