Commit d88c4df1 authored by David Surville's avatar David Surville
Browse files

Merge branch '5.x' into release/8.0-perimetres

parents 9d7afba6 842613de
Loading
Loading
Loading
Loading
Loading
+38 −32
Changes for config/module.config.php: 38 added lines, 32 removed lines.
Original line number Diff line number Diff line
@@ -89,6 +89,16 @@ $settings = [
         */
        'enabled' => true,

        /**
         * Permet de sauter le formulaire d'authentification "/auth/connexion" si CAS est la seule source d'authentification
         */
        'form_skip' => false,

        /**
         * Titre facultatif de ce mode d'authentification qui apparaîtra sur la page de connexinon
         */
        'title' => "Authentification centralisée",

        /**
         * Description facultative de ce mode d'authentification qui apparaîtra sur la page de connexion.
         */
@@ -104,11 +114,6 @@ $settings = [
         */
        'form' => CasLoginForm::class,

        /**
         * Permet de sauter le formulaire d'authentification "/auth/connexion" si CAS est la seule source d'authentification
         */
        'form_skip' => false,

        /**
         * Infos de connexion au serveur CAS.
         */
@@ -130,14 +135,15 @@ $settings = [
     */
    'local' => [
        'order' => 2,

        'enabled' => true,

        'title' => "Avec un compte local (ldap/db)",

        'description' => "Utilisez ce formulaire si vous possédez un compte LDAP établissement ou un compte local dédié à l'application.",

        'form' => LoginForm::class,

        /** /!\ Pas modifiable dans la conf local */
        'form_skip' => false,

        /**
         * Mode d'authentification à l'aide d'un compte dans la BDD de l'application.
         */
@@ -164,16 +170,22 @@ $settings = [
     */
    'shib' => [
        'order' => 3,

        'enabled' => false,
        'description' => "Cliquez sur le bouton ci-dessous pour accéder à l'authentification via la fédération d'identité.",
        'adapter' => Shib::class,
        'form' => ShibLoginForm::class,

        /**
         * Permet de sauter le formulaire d'authentification "/auth/connexion" si Shibboleth est la seule source d'authentification
         */
        'form_skip' => false,

        'title' => "Via la fédération d'identité",

        'description' => "Cliquez sur le bouton ci-dessous pour accéder à l'authentification via la fédération d'identité.",

        'adapter' => Shib::class,

        'form' => ShibLoginForm::class,

        /**
         * URL de déconnexion.
         */
@@ -308,6 +320,20 @@ return [
         * Accepted values: boolean true or false
         */
        'enable_display_name' => true,
        /**
         * Enable user state usage
         * Should user's state be used in the registration/login process?
         * Default value is true.
         * Accapted values: boolean true or false
         */
        'enable_user_state' => true,
        /**
         * States which are allowing user to login
         * When user tries to login, is his/her state one of the following?
         * Include null if you want user's with no state to login as well.
         * Allowed value types: null and integer
         */
        'allowed_login_states' => [1],
        /**
         * Authentication Adapters
         * Specify the adapters that will be used to try and authenticate the user
@@ -321,7 +347,7 @@ return [
        ],

        // telling ZfcUser to use our own class
        'user_entity_class' => 'UnicaenAuthentification\Entity\Db\User',
        'user_entity_class' => 'UnicaenUtilisateur\Entity\Db\User',
        // telling ZfcUserDoctrineORM to skip the entities it defines
        'enable_default_entities' => false,
    ],
@@ -358,8 +384,6 @@ return [
                ['controller' => 'UnicaenAuthentification\Controller\Auth', 'action' => 'authenticate', 'roles' => 'guest'],
                ['controller' => 'UnicaenAuthentification\Controller\Auth', 'action' => 'logout', 'roles' => 'guest'],
                ['controller' => 'UnicaenAuthentification\Controller\Auth', 'action' => 'shibboleth', 'roles' => 'guest'],
                ['controller' => 'UnicaenAuthentification\Controller\Auth', 'action' => 'requestPasswordReset', 'roles' => 'guest'],
                ['controller' => 'UnicaenAuthentification\Controller\Auth', 'action' => 'changePassword', 'roles' => 'guest'],
            ],
        ],
    ],
@@ -427,24 +451,6 @@ return [
                            ],
                        ],
                    ],
                    'requestPasswordReset' => [
                        'type' => 'Segment',
                        'options' => [
                            'route' => '/request-password-reset',
                            'defaults' => [
                                'action' => 'requestPasswordReset',
                            ],
                        ],
                    ],
                    'changePassword' => [
                        'type' => 'Segment',
                        'options' => [
                            'route' => '/change-password/:token',
                            'defaults' => [
                                'action' => 'changePassword',
                            ],
                        ],
                    ],
                ],
            ],
            'zfcuser' => [
+47 −0
Changes for config/unicaen-authentification.local.php.dist: 47 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -17,6 +17,16 @@ return [
             */
            'enabled' => true,

            /**
             * Permet de sauter le formulaire d'authentification "/auth/connexion" si CAS est la seule source d'authentification
             */
            'form_skip' => false,

            /**
             * Titre facultatif de ce mode d'authentification qui apparaîtra sur la page de connexinon
             */
            'title' => "Authentification centralisée",

            /**
             * Description facultative de ce mode d'authentification qui apparaîtra sur la page de connexion.
             */
@@ -42,8 +52,24 @@ return [
         * Configuration de l'authentification locale (compte LDAP établissement, ou compte BDD application).
         */
        'local' => [
            /**
             * Ordre d'affichage du formulaire de connexion.
             */
            'order' => 2,

            /**
             * Activation ou non de ce mode d'authentification.
             */
            'enabled' => true,

            /**
             * Titre facultatif de ce mode d'authentification qui apparaîtra sur la page de connexinon
             */
            'title' => "Avec un compte local (ldap/db)",

            /**
             * Description facultative de ce mode d'authentification qui apparaîtra sur la page de connexion.
             */
            'description' => "Utilisez ce formulaire si vous possédez un compte LDAP établissement ou un compte local dédié à l'application.",

            /**
@@ -69,8 +95,29 @@ return [
         * Authentification via la fédération d'identité (Shibboleth).
         */
        'shib' => [
            /**
             * Ordre d'affichage du formulaire de connexion.
             */
            'order' => 3,

            /**
             * Activation ou non de ce mode d'authentification.
             */
            'enabled' => false,

            /**
             * Permet de sauter le formulaire d'authentification "/auth/connexion" si Shibboleth est la seule source d'authentification
             */
            'form_skip' => false,

            /**
             * Titre facultatif de ce mode d'authentification qui apparaîtra sur la page de connexinon
             */
            'title' => "Via la fédération d'identité",

            /**
             * Description facultative de ce mode d'authentification qui apparaîtra sur la page de connexion.
             */
            'description' =>
                "Cliquez sur le bouton ci-dessous pour accéder à l'authentification via la fédération d'identité. " .
                "<strong>NB: Vous devrez utiliser votre compte " .
+157 −0
Changes for data/sql/migration_perimetre_oracle.sql: 157 added lines, 0 removed lines.
Original line number Diff line number Diff line
-- -----------------------------------------------------
-- TABLE UNICAEN_UTILISATEUR_ROLE
-- -----------------------------------------------------
RENAME <SEQ_NAME> TO UNICAEN_UTILISATEUR_ROLE_ID_SEQ;


-- -----------------------------------------------------
-- TABLE UNICAEN_UTILISATEUR_USER
-- -----------------------------------------------------
RENAME <SEQ_NAME> TO UNICAEN_UTILISATEUR_USER_ID_SEQ;


-- -----------------------------------------------------
-- TABLE UNICAEN_UTILISATEUR_USER_ROLE_LINKER
-- -----------------------------------------------------
CREATE SEQUENCE UNICAEN_UTILISATEUR_USER_ROLE_LINKER_ID_SEQ NOCYCLE START WITH 1 INCREMENT BY 1 MINVALUE 0;

CREATE TABLE UNICAEN_UTILISATEUR_USER_ROLE_LINKER (
  ID        NUMBER(*,0) NOT NULL,
  USER_ID   NUMBER(*,0) NOT NULL,
  ROLE_ID   NUMBER(*,0) NOT NULL
);

INSERT INTO UNICAEN_UTILISATEUR_USER_ROLE_LINKER (
  ID,
  USER_ID,
  ROLE_ID
)
WITH tmp AS (
  SELECT * FROM UNICAEN_UTILISATEUR_ROLE_LINKER
)
SELECT
  UNICAEN_UTILISATEUR_USER_ROLE_LINKER_ID_SEQ.nextval,
  tmp.USER_ID,
  tmp.ROLE_ID
FROM tmp;

DROP TABLE UNICAEN_UTILISATEUR_ROLE_LINKER;
ALTER TABLE UNICAEN_UTILISATEUR_USER_ROLE_LINKER ADD CONSTRAINT PK_UNICAEN_USER_ROLE_LINKER PRIMARY KEY (ID);
ALTER TABLE UNICAEN_UTILISATEUR_USER_ROLE_LINKER ADD CONSTRAINT UN_UNICAEN_USER_ROLE_LINKER UNIQUE (USER_ID, ROLE_ID);
ALTER TABLE UNICAEN_UTILISATEUR_USER_ROLE_LINKER ADD CONSTRAINT FK_UNICAEN_USER_ROLE_LINKER_USER FOREIGN KEY (USER_ID) REFERENCES UNICAEN_UTILISATEUR_USER (ID) DEFERRABLE INITIALLY IMMEDIATE;
ALTER TABLE UNICAEN_UTILISATEUR_USER_ROLE_LINKER ADD CONSTRAINT FK_UNICAEN_USER_ROLE_LINKER_ROLE FOREIGN KEY (ROLE_ID) REFERENCES UNICAEN_UTILISATEUR_ROLE (ID) DEFERRABLE INITIALLY IMMEDIATE;
CREATE INDEX IX_UNICAEN_USER_ROLE_LINKER_USER ON UNICAEN_UTILISATEUR_USER_ROLE_LINKER (USER_ID);
CREATE INDEX IX_UNICAEN_USER_ROLE_LINKER_ROLE ON UNICAEN_UTILISATEUR_USER_ROLE_LINKER (ROLE_ID);


-- -----------------------------------------------------
-- TABLE UNICAEN_PRIVILEGE_PRIVILEGE_CATEGORIE
-- -----------------------------------------------------
RENAME <SEQ_NAME> TO UNICAEN_PRIVILEGE_PRIVILEGE_CATEGORIE_ID_SEQ;
RENAME UNICAEN_PRIVILEGE_CATEGORIE TO UNICAEN_PRIVILEGE_PRIVILEGE_CATEGORIE;


-- -----------------------------------------------------
-- TABLE UNICAEN_PRIVILEGE_PRIVILEGE
-- -----------------------------------------------------
RENAME <SEQ_NAME> TO UNICAEN_PRIVILEGE_PRIVILEGE_ID_SEQ;


-- -----------------------------------------------------
-- TABLE UNICAEN_PRIVILEGE_PERIMETRE_CATEGORIE
-- -----------------------------------------------------
CREATE SEQUENCE UNICAEN_PRIVILEGE_PERIMETRE_CATEGORIE_ID_SEQ NOCYCLE START WITH 1 INCREMENT BY 1 MINVALUE 0;

CREATE TABLE UNICAEN_PRIVILEGE_PERIMETRE_CATEGORIE (
  ID          NUMBER(*,0)         NOT NULL,
  CODE        VARCHAR2(150 CHAR)  NOT NULL,
  LIBELLE     VARCHAR2(255 CHAR)  NOT NULL,
  DESCRIPTION VARCHAR2(1024 CHAR) NULL,
  ORDRE       INT                 DEFAULT 0,
  CONSTRAINT PK_UNICAEN_PERIMETRE_CATEGORIE PRIMARY KEY (ID),
  CONSTRAINT UN_UNICAEN_PERIMETRE_CATEGORIE_CODE UNIQUE (CODE)
);


-- -----------------------------------------------------
-- TABLE UNICAEN_PRIVILEGE_PERIMETRE
-- -----------------------------------------------------
CREATE SEQUENCE UNICAEN_PRIVILEGE_PERIMETRE_ID_SEQ NOCYCLE START WITH 1 INCREMENT BY 1 MINVALUE 0;

CREATE TABLE UNICAEN_PRIVILEGE_PERIMETRE (
  ID            NUMBER(*,0)         NOT NULL,
  CATEGORIE_ID  NUMBER(*,0)         NOT NULL,
  CODE          VARCHAR2(150 CHAR)  NOT NULL,
  LIBELLE       VARCHAR2(255 CHAR)  NOT NULL,
  DESCRIPTION   VARCHAR2(1024 CHAR) NULL,
  ORDRE         INT                 DEFAULT 0,
  CONSTRAINT PK_UNICAEN_PERIMETRE PRIMARY KEY (ID),
  CONSTRAINT UN_UNICAEN_PERIMETRE_CODE UNIQUE (CATEGORIE_ID, CODE),
  CONSTRAINT FK_UNICAEN_PERIMETRE_CATEGORIE FOREIGN KEY (CATEGORIE_ID) REFERENCES UNICAEN_PRIVILEGE_PERIMETRE_CATEGORIE (ID) DEFERRABLE INITIALLY IMMEDIATE
);

CREATE INDEX IX_UNICAEN_PERIMETRE_CATEGORIE ON UNICAEN_PRIVILEGE_PERIMETRE (CATEGORIE_ID);


-- -----------------------------------------------------
-- TABLE UNICAEN_PRIVILEGE_PERIMETRE_USER_ROLE_LINKER
-- -----------------------------------------------------
CREATE SEQUENCE UNICAEN_PRIVILEGE_PERIMETRE_USER_ROLE_LINKER_ID_SEQ NOCYCLE START WITH 1 INCREMENT BY 1 MINVALUE 0;

CREATE TABLE UNICAEN_PRIVILEGE_PERIMETRE_USER_ROLE_LINKER (
  ID            NUMBER(*,0) NOT NULL,
  PERIMETRE_ID  NUMBER(*,0) NOT NULL,
  USER_ROLE_ID  NUMBER(*,0) NOT NULL,
  CONSTRAINT PK_UNICAEN_PERIMETRE_USER_ROLE_LINKER PRIMARY KEY (ID),
  CONSTRAINT UN_UNICAEN_PERIMETRE_USER_ROLE_LINKER UNIQUE (PERIMETRE_ID, USER_ROLE_ID),
  CONSTRAINT FK_UNICAEN_PERIMETRE_USER_ROLE_LINKER_PERIMETRE FOREIGN KEY (PERIMETRE_ID) REFERENCES UNICAEN_PRIVILEGE_PERIMETRE (ID) DEFERRABLE INITIALLY IMMEDIATE,
  CONSTRAINT FK_UNICAEN_PERIMETRE_USER_ROLE_LINKER_USER_ROLE FOREIGN KEY (USER_ROLE_ID) REFERENCES UNICAEN_UTILISATEUR_USER_ROLE_LINKER (ID) DEFERRABLE INITIALLY IMMEDIATE
);

CREATE INDEX IX_UNICAEN_PERIMETRE_USER_ROLE_LINKER_PERIMETRE ON UNICAEN_PRIVILEGE_PERIMETRE_USER_ROLE_LINKER (PERIMETRE_ID);
CREATE INDEX IX_UNICAEN_PERIMETRE_USER_ROLE_LINKER_USER_ROLE ON UNICAEN_PRIVILEGE_PERIMETRE_USER_ROLE_LINKER (USER_ROLE_ID);


-- -----------------------------------------------------
-- TABLE UNICAEN_PRIVILEGE_PERIMETRE_CATEGORIE_ROLE_LINKER
-- -----------------------------------------------------
CREATE TABLE UNICAEN_PRIVILEGE_PERIMETRE_CATEGORIE_ROLE_LINKER (
  PERIMETRE_CATEGORIE_ID  NUMBER(*, 0) NOT NULL,
  ROLE_ID                 NUMBER(*, 0) NOT NULL,
  CONSTRAINT PK_UNICAEN_PERIMETRE_CATEGORIE_ROLE_LINKER PRIMARY KEY (PERIMETRE_CATEGORIE_ID, ROLE_ID),
  CONSTRAINT FK_UNICAEN_PERIMETRE_CATEGORIE_ROLE_LINKER_PERIMETRE_CATEG FOREIGN KEY (PERIMETRE_CATEGORIE_ID) REFERENCES UNICAEN_PRIVILEGE_PERIMETRE_CATEGORIE (ID) DEFERRABLE INITIALLY IMMEDIATE,
  CONSTRAINT FK_UNICAEN_PERIMETRE_CATEGORIE_ROLE_LINKER_ROLE FOREIGN KEY (ROLE_ID) REFERENCES UNICAEN_UTILISATEUR_ROLE (ID) DEFERRABLE INITIALLY IMMEDIATE
);

CREATE INDEX IX_UNICAEN_PERIMETRE_CATEGORIE_ROLE_LINKER_PERIMETRE_CATEG ON UNICAEN_PRIVILEGE_PERIMETRE_CATEGORIE_ROLE_LINKER (PERIMETRE_CATEGORIE_ID);
CREATE INDEX IX_UNICAEN_PERIMETRE_CATEGORIE_ROLE_LINKER_ROLE ON UNICAEN_PRIVILEGE_PERIMETRE_CATEGORIE_ROLE_LINKER (ROLE_ID);


-- DATA

INSERT INTO UTILISATEUR_PRIVILEGE_CATEGORIE (ID, CODE, LIBELLE, NAMESPACE, ORDRE)
WITH tmp AS (
  SELECT  1, 'perimetre'  c, 'Gestion des périmètres' l, 'UnicaenPrivilege\Provider\Privilege'  n, 4  o FROM dual
)
SELECT
  UTILISATEUR_PRIVILEGE_CATEGORIE_ID_SEQ.nextval,
  tmp.c,
  tmp.l,
  tmp.n,
  tmp.o
FROM tmp;

INSERT INTO UTILISATEUR_PRIVILEGE (ID, CATEGORIE_ID, CODE, LIBELLE, ORDRE)
WITH tmp AS (
  SELECT 1, 1 ca, 'consulter' c, 'Consulter les périmètres' l, 1  o FROM dual UNION
  SELECT 2, 1 ca, 'attribuer' c, 'Attribuer un périmètre'   l, 2  o FROM dual UNION
  SELECT 3, 1 ca, 'editer'    c, 'Éditer un périmètre'      l, 3  o FROM dual UNION
  SELECT 4, 1 ca, 'supprimer' c, 'Supprimer un périmètre'   l, 4  o FROM dual
)
SELECT
  UTILISATEUR_PRIVILEGE_ID_SEQ.nextval,
  UTILISATEUR_PRIVILEGE_CATEGORIE_ID_SEQ.currval,
  tmp.c,
  tmp.l,
  tmp.o
FROM tmp;
 No newline at end of file
+135 −0
Changes for data/sql/migration_perimetre_postgresql.sql: 135 added lines, 0 removed lines.
Original line number Diff line number Diff line
-- -----------------------------------------------------
-- TABLE UNICAEN_UTILISATEUR_ROLE
-- -----------------------------------------------------
ALTER SEQUENCE <SEQ_NAME> RENAME TO UNICAEN_UTILISATEUR_ROLE_ID_SEQ;


-- -----------------------------------------------------
-- TABLE UNICAEN_UTILISATEUR_USER
-- -----------------------------------------------------
ALTER SEQUENCE <SEQ_NAME> RENAME TO UNICAEN_UTILISATEUR_USER_ID_SEQ;


-- -----------------------------------------------------
-- TABLE UNICAEN_UTILISATEUR_USER_ROLE_LINKER
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS UNICAEN_UTILISATEUR_USER_ROLE_LINKER (
  ID               SERIAL  PRIMARY KEY,
  USER_ID          INTEGER NOT NULL,
  ROLE_ID          INTEGER NOT NULL
);

WITH url(u, r) AS (
  SELECT * FROM UNICAEN_UTILISATEUR_ROLE_LINKER
)
INSERT INTO UNICAEN_UTILISATEUR_USER_ROLE_LINKER (USER_ID, ROLE_ID)
SELECT url.u, url.r FROM url;

DROP TABLE UNICAEN_UTILISATEUR_ROLE_LINKER;
ALTER TABLE UNICAEN_UTILISATEUR_USER_ROLE_LINKER ADD CONSTRAINT FK_UNICAEN_USER_ROLE_LINKER_USER FOREIGN KEY (USER_ID) REFERENCES UNICAEN_UTILISATEUR_USER (ID) DEFERRABLE INITIALLY IMMEDIATE;
ALTER TABLE UNICAEN_UTILISATEUR_USER_ROLE_LINKER ADD CONSTRAINT FK_UNICAEN_USER_ROLE_LINKER_ROLE FOREIGN KEY (ROLE_ID) REFERENCES UNICAEN_UTILISATEUR_ROLE (ID) DEFERRABLE INITIALLY IMMEDIATE;
CREATE UNIQUE INDEX UN_UNICAEN_USER_ROLE_LINKER ON UNICAEN_UTILISATEUR_USER_ROLE_LINKER(USER_ID, ROLE_ID);
CREATE INDEX IX_UNICAEN_USER_ROLE_LINKER_USER ON UNICAEN_UTILISATEUR_USER_ROLE_LINKER (USER_ID);
CREATE INDEX IX_UNICAEN_USER_ROLE_LINKER_ROLE ON UNICAEN_UTILISATEUR_USER_ROLE_LINKER (ROLE_ID);


-- -----------------------------------------------------
-- TABLE UNICAEN_PRIVILEGE_PRIVILEGE_CATEGORIE
-- -----------------------------------------------------
ALTER SEQUENCE <SEQ_NAME> RENAME TO UNICAEN_PRIVILEGE_PRIVILEGE_CATEGORIE_ID_SEQ;
ALTER TABLE UNICAEN_PRIVILEGE_CATEGORIE RENAME TO UNICAEN_PRIVILEGE_PRIVILEGE_CATEGORIE;


-- -----------------------------------------------------
-- TABLE UNICAEN_PRIVILEGE_PRIVILEGE
-- -----------------------------------------------------
ALTER SEQUENCE <SEQ_NAME> RENAME TO UNICAEN_PRIVILEGE_PRIVILEGE_ID_SEQ;


-- -----------------------------------------------------
-- TABLE UNICAEN_PRIVILEGE_PERIMETRE_CATEGORIE
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS UNICAEN_PRIVILEGE_PERIMETRE_CATEGORIE (
  ID          SERIAL            PRIMARY KEY,
  CODE        VARCHAR(150)     NOT NULL,
  LIBELLE     VARCHAR(255)     NOT NULL,
  DESCRIPTION VARCHAR(1024)    NULL,
  ORDRE       INTEGER           DEFAULT 0
);

CREATE UNIQUE INDEX UN_UNICAEN_PERIMETRE_CATEGORIE_CODE ON UNICAEN_PRIVILEGE_PERIMETRE_CATEGORIE (CODE);


-- -----------------------------------------------------
-- TABLE UNICAEN_PRIVILEGE_PERIMETRE
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS UNICAEN_PRIVILEGE_PERIMETRE (
  ID            SERIAL          PRIMARY KEY,
  CATEGORIE_ID  INTEGER         NOT NULL,
  CODE          VARCHAR(150)   NOT NULL,
  LIBELLE       VARCHAR(255)   NOT NULL,
  DESCRIPTION   VARCHAR(1024)  NULL,
  ORDRE         INTEGER         DEFAULT 0,
  CONSTRAINT FK_UNICAEN_PERIMETRE_CATEGORIE FOREIGN KEY (CATEGORIE_ID) REFERENCES UNICAEN_PRIVILEGE_PERIMETRE_CATEGORIE (ID) DEFERRABLE INITIALLY IMMEDIATE
);

CREATE UNIQUE INDEX UN_UNICAEN_PERIMETRE_CODE ON UNICAEN_PRIVILEGE_PERIMETRE(CATEGORIE_ID, CODE);
CREATE INDEX IX_UNICAEN_PERIMETRE_CATEGORIE ON UNICAEN_PRIVILEGE_PERIMETRE(CATEGORIE_ID);


-- -----------------------------------------------------
-- TABLE UNICAEN_PRIVILEGE_PERIMETRE_USER_ROLE_LINKER
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS UNICAEN_PRIVILEGE_PERIMETRE_USER_ROLE_LINKER (
  ID              SERIAL  PRIMARY KEY,
  PERIMETRE_ID    INTEGER NOT NULL,
  USER_ROLE_ID    INTEGER NOT NULL,
  CONSTRAINT FK_UNICAEN_PERIMETRE_USER_ROLE_LINKER_PERIMETRE FOREIGN KEY (PERIMETRE_ID) REFERENCES UNICAEN_PRIVILEGE_PERIMETRE (ID) DEFERRABLE INITIALLY IMMEDIATE,
  CONSTRAINT FK_UNICAEN_PERIMETRE_USER_ROLE_LINKER_USER_ROLE FOREIGN KEY (USER_ROLE_ID) REFERENCES UNICAEN_UTILISATEUR_USER_ROLE_LINKER (ID) DEFERRABLE INITIALLY IMMEDIATE
);

CREATE UNIQUE INDEX UN_UNICAEN_PERIMETRE_USER_ROLE_LINKER ON UNICAEN_PRIVILEGE_PERIMETRE_USER_ROLE_LINKER(PERIMETRE_ID, USER_ROLE_ID);
CREATE INDEX IX_UNICAEN_PERIMETRE_USER_ROLE_LINKER_PERIMETRE ON UNICAEN_PRIVILEGE_PERIMETRE_USER_ROLE_LINKER (PERIMETRE_ID);
CREATE INDEX IX_UNICAEN_PERIMETRE_USER_ROLE_LINKER_USER_ROLE ON UNICAEN_PRIVILEGE_PERIMETRE_USER_ROLE_LINKER (USER_ROLE_ID);


-- -----------------------------------------------------
-- TABLE UNICAEN_PRIVILEGE_PERIMETRE_CATEGORIE_ROLE_LINKER
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS UNICAEN_PRIVILEGE_PERIMETRE_CATEGORIE_ROLE_LINKER (
  PERIMETRE_CATEGORIE_ID  INTEGER NOT NULL,
  ROLE_ID                 INTEGER NOT NULL,
  CONSTRAINT PK_UNICAEN_PERIMETRE_CATEGORIE_ROLE_LINKER PRIMARY KEY (PERIMETRE_CATEGORIE_ID, ROLE_ID),
  CONSTRAINT FK_UNICAEN_PERIMETRE_CATEGORIE_ROLE_LINKER_PERIMETRE_CATEG FOREIGN KEY (PERIMETRE_CATEGORIE_ID) REFERENCES UNICAEN_PRIVILEGE_PERIMETRE_CATEGORIE (ID) DEFERRABLE INITIALLY IMMEDIATE,
  CONSTRAINT FK_UNICAEN_PERIMETRE_CATEGORIE_ROLE_LINKER_ROLE FOREIGN KEY (ROLE_ID) REFERENCES UNICAEN_UTILISATEUR_ROLE (ID) DEFERRABLE INITIALLY IMMEDIATE
);

CREATE INDEX IX_UNICAEN_PERIMETRE_CATEGORIE_ROLE_LINKER_PERIMETRE_CATEG ON UNICAEN_PRIVILEGE_PERIMETRE_CATEGORIE_ROLE_LINKER (PERIMETRE_CATEGORIE_ID);
CREATE INDEX IX_UNICAEN_PERIMETRE_CATEGORIE_ROLE_LINKER_ROLE ON UNICAEN_PRIVILEGE_PERIMETRE_CATEGORIE_ROLE_LINKER (ROLE_ID);


-- DATA

INSERT INTO UNICAEN_PRIVILEGE_PRIVILEGE_CATEGORIE (CODE, LIBELLE, NAMESPACE, ORDRE)
VALUES
  ('perimetre',   'Gestion des périmètres',   'UnicaenPrivilege\Provider\Privilege',    4)
ON CONFLICT (CODE) DO
  UPDATE SET
    LIBELLE=excluded.LIBELLE,
    NAMESPACE=excluded.NAMESPACE,
    ORDRE=excluded.ORDRE;

WITH d(code, lib, ordre) AS (
  SELECT 'consulter', 'Consulter les périmètres', 1 UNION
  SELECT 'attribuer', 'Attribuer un périmètre',   2 UNION
  SELECT 'editer',    'Éditer un périmètre',      3 UNION
  SELECT 'supprimer', 'Supprimer un périmètre',   4
)
INSERT INTO UNICAEN_PRIVILEGE_PRIVILEGE(CATEGORIE_ID, CODE, LIBELLE, ORDRE)
  SELECT cp.id, d.code, d.lib, d.ordre
  FROM d
    JOIN UNICAEN_PRIVILEGE_PRIVILEGE_CATEGORIE cp ON cp.CODE = 'perimetre'
  ON CONFLICT (CATEGORIE_ID, CODE) DO
    UPDATE SET
      LIBELLE=excluded.LIBELLE,
      ORDRE=excluded.ORDRE;
 No newline at end of file
+305 −0

File added.

Preview size limit exceeded, changes collapsed.

Loading