Skip to content
Snippets Groups Projects
Commit 7663161c authored by David Surville's avatar David Surville
Browse files

Merge branch 'auth_migration'

parents 743c8c78 b90cbaea
No related branches found
No related tags found
No related merge requests found
Pipeline #12450 passed
Showing
with 1055 additions and 504 deletions
-- categories de privilege
create table unicaen_privilege_categorie
(
id serial not null
constraint categorie_privilege_pkey primary key,
code varchar(150) not null,
libelle varchar(200) not null,
ordre integer default 0,
namespace varchar(255)
);
create unique index categorie_privilege_code_uindex on unicaen_privilege_categorie (code);
create unique index categorie_privilege_id_uindex on unicaen_privilege_categorie (id);
--privileges
create table unicaen_privilege_privilege
(
id serial not null
constraint privilege_pkey primary key,
categorie_id integer not null
constraint privilege_categorie_privilege_id_fk references unicaen_privilege_categorie,
code varchar(150) not null,
libelle varchar(200) not null,
ordre integer default 0
);
create index privilege_categorie_id_index on unicaen_privilege_privilege (categorie_id);
create unique index privilege_id_uindex on unicaen_privilege_privilege (id);
create unique index unicaen_privilege_privilege_code_uindex on unicaen_privilege_privilege (categorie_id, code);
-- linker
create table unicaen_privilege_privilege_role_linker
(
role_id integer not null
constraint unicaen_privilege_privilege_role_linker_role_id_fk
references unicaen_utilisateur_role
on delete cascade,
privilege_id integer not null
constraint unicaen_privilege_privilege_role_linker_privilege_id_fk
references unicaen_privilege_privilege
on delete cascade,
constraint unicaen_privilege_privilege_role_linker_pk
primary key (role_id, privilege_id)
);
\ No newline at end of file
-- Insertion de la catégorie associée à la gestion des utilisateurs
INSERT INTO unicaen_privilege_categorie (id, code, libelle, ordre) VALUES (next_val(unicaen_privilege_categorie_id_seq), 'privilege', 'Gestion des privilèges', 2000);
-- Insertion des privilèges de base
INSERT INTO unicaen_privilege_privilege (id, categorie_id, code, libelle, ordre) VALUES (next_val(unicaen_privilege_privilege_id_seq), current_val(unicaen_privilege_categorie_id_seq), 'privilege_voir', 'Afficher les privilèges', 10);
INSERT INTO unicaen_privilege_privilege (id, categorie_id, code, libelle, ordre) VALUES (next_val(unicaen_privilege_privilege_id_seq), current_val(unicaen_privilege_categorie_id_seq), 'privilege_ajouter', 'Ajouter un privilège', 20);
INSERT INTO unicaen_privilege_privilege (id, categorie_id, code, libelle, ordre) VALUES (next_val(unicaen_privilege_privilege_id_seq), current_val(unicaen_privilege_categorie_id_seq), 'privilege_modifier', 'Modifier un privilège', 30);
INSERT INTO unicaen_privilege_privilege (id, categorie_id, code, libelle, ordre) VALUES (next_val(unicaen_privilege_privilege_id_seq), current_val(unicaen_privilege_categorie_id_seq), 'privilege_supprimer', 'Supprimer un privilège', 40);
INSERT INTO unicaen_privilege_privilege (id, categorie_id, code, libelle, ordre) VALUES (next_val(unicaen_privilege_privilege_id_seq), current_val(unicaen_privilege_categorie_id_seq), 'privilege_affecter', 'Affecter un privilège', 50);
<?php
use UnicaenPrivilege\Controller\AffectationController;
use UnicaenPrivilege\Controller\AffectationControllerFactory;
use UnicaenPrivilege\Guard\PrivilegeController;
use UnicaenPrivilege\Provider\Privilege\PrivilegePrivileges;
use UnicaenPrivilege\Service\Affectation\AffectationService;
use UnicaenPrivilege\Service\Affectation\AffectationServiceFactory;
use Zend\Router\Http\Literal;
use Zend\Router\Http\Segment;
return [
'bjyauthorize' => [
'guards' => [
UnicaenPrivilege\Guard\PrivilegeController::class => [
[
'controller' => AffectationController::class,
'action' => [
'index',
'modifier'
],
'privileges' => [
PrivilegePrivileges::PRIVILEGE_VOIR,
],
],
],
],
],
'navigation' => [
'default' => [
'home' => [
'pages' => [
'administration' => [
'pages' => [
'privilege' => [
'label' => 'Privilège',
'route' => 'unicaen-privilege/affectation',
'resource' => PrivilegeController::getResourceId(AffectationController::class, 'index'),
'order' => 5000,
],
],
],
],
],
],
],
'router' => [
'routes' => [
'unicaen-privilege' => [
'type' => Literal::class,
'options' => [
'route' => '/unicaen-privilege',
],
'may_terminate' => false,
'child_routes' => [
'affectation' => [
'type' => Literal::class,
'options' => [
'route' => '/affectation',
'defaults' => [
'controller' => AffectationController::class,
'action' => 'index',
],
],
],
'modifier-affectation' => [
'type' => Segment::class,
'options' => [
'route' => '/modifier-affectation/:role/:privilege',
'defaults' => [
'controller' => AffectationController::class,
'action' => 'modifier',
],
],
],
],
],
],
],
'service_manager' => [
'factories' => [
AffectationService::class => AffectationServiceFactory::class,
],
],
'controllers' => [
'factories' => [
AffectationController::class => AffectationControllerFactory::class,
],
],
'form_elements' => [
'factories' => [],
],
'hydrators' => [
'factories' => [],
]
];
\ No newline at end of file
......@@ -2,10 +2,10 @@
use UnicaenPrivilege\Controller\CategorieController;
use UnicaenPrivilege\Controller\CategorieControllerFactory;
use UnicaenPrivilege\Form\Categorie\CategorieFiltreForm;
use UnicaenPrivilege\Form\Categorie\CategorieFiltreFormFactory;
use UnicaenPrivilege\Form\Categorie\CategorieForm;
use UnicaenPrivilege\Form\Categorie\CategorieFormFactory;
use UnicaenPrivilege\Form\Categorie\CategorieHydrator;
use UnicaenPrivilege\Form\Categorie\CategorieHydratorFactory;
use UnicaenPrivilege\Provider\Privilege\PrivilegePrivileges;
use UnicaenPrivilege\Service\Categorie\CategorieService;
use UnicaenPrivilege\Service\Categorie\CategorieServiceFactory;
......@@ -38,11 +38,6 @@ return [
'router' => [
'routes' => [
'unicaen-privilege' => [
'type' => Literal::class,
'options' => [
'route' => '/unicaen-privilege',
],
'may_terminate' => false,
'child_routes' => [
'categorie' => [
'type' => Literal::class,
......@@ -126,19 +121,17 @@ return [
CategorieController::class => CategorieControllerFactory::class,
],
],
'service_manager' => [
'factories' => [
CategorieService::class => CategorieServiceFactory::class,
],
],
'form_elements' => [
'factories' => [
CategorieForm::class => CategorieFormFactory::class,
],
],
'hydrators' => [
'factories' => [
CategorieHydrator::class => CategorieHydratorFactory::class,
CategorieFiltreForm::class => CategorieFiltreFormFactory::class,
],
],
];
\ No newline at end of file
......@@ -4,13 +4,12 @@ use UnicaenPrivilege\Controller\PrivilegeController;
use UnicaenPrivilege\Controller\PrivilegeControllerFactory;
use UnicaenPrivilege\Form\Privilege\PrivilegeForm;
use UnicaenPrivilege\Form\Privilege\PrivilegeFormFactory;
use UnicaenPrivilege\Form\Privilege\PrivilegeHydrator;
use UnicaenPrivilege\Form\Privilege\PrivilegeHydratorFactory;
use UnicaenPrivilege\Provider\Privilege\PrivilegePrivileges;
use UnicaenPrivilege\Provider\Rule\PrivilegeRuleProvider;
use UnicaenPrivilege\Provider\Rule\PrivilegeRuleProviderFactory;
use UnicaenPrivilege\Service\Privilege\PrivilegeService;
use UnicaenPrivilege\Service\Privilege\PrivilegeServiceFactory;
use UnicaenPrivilege\View\Privilege\PrivilegeViewHelper;
use Zend\Router\Http\Literal;
use Zend\Router\Http\Segment;
......@@ -19,15 +18,49 @@ return [
'bjyauthorize' => [
'guards' => [
UnicaenPrivilege\Guard\PrivilegeController::class => [
[
'controller' => PrivilegeController::class,
'action' => [
'index',
],
'privileges' => [
PrivilegePrivileges::PRIVILEGE_VOIR,
],
],
[
'controller' => PrivilegeController::class,
'action' => [
'attribuer',
],
'privileges' => [
PrivilegePrivileges::PRIVILEGE_ATTRIBUER,
],
],
[
'controller' => PrivilegeController::class,
'action' => [
'ajouter',
],
'privileges' => [
PrivilegePrivileges::PRIVILEGE_AJOUTER,
],
],
[
'controller' => PrivilegeController::class,
'action' => [
'modifier',
],
'privileges' => [
PrivilegePrivileges::PRIVILEGE_MODIFIER,
],
],
[
'controller' => PrivilegeController::class,
'action' => [
'supprimer',
],
'privileges' => [
PrivilegePrivileges::PRIVILEGE_AJOUTER,
PrivilegePrivileges::PRIVILEGE_SUPPRIMER,
],
],
],
......@@ -39,20 +72,24 @@ return [
'unicaen-privilege' => [
'type' => Literal::class,
'options' => [
'route' => '/unicaen-privilege',
'route' => '/privilege',
'defaults' => [
'controller' => PrivilegeController::class,
'action' => 'index',
],
'may_terminate' => false,
],
'may_terminate' => true,
'child_routes' => [
'privilege' => [
'type' => Literal::class,
'attribuer' => [
'type' => Segment::class,
'options' => [
'route' => '/privilege',
'route' => '/attribuer/:role/:privilege',
'defaults' => [
'controller' => PrivilegeController::class,
'action' => 'attribuer',
],
],
],
'may_terminate' => false,
'child_routes' => [
'ajouter' => [
'type' => Segment::class,
'options' => [
......@@ -87,8 +124,6 @@ return [
],
],
],
],
],
'controllers' => [
'factories' => [
......@@ -108,10 +143,10 @@ return [
PrivilegeForm::class => PrivilegeFormFactory::class,
],
],
'hydrators' => [
'factories' => [
PrivilegeHydrator::class => PrivilegeHydratorFactory::class,
'view_helpers' => [
'invokables' => [
'privilege' => PrivilegeViewHelper::class,
],
],
];
\ No newline at end of file
......@@ -30,7 +30,7 @@ return [
'service_manager' => [
'factories' => [
'BjyAuthorize\Service\Authorize' => \UnicaenPrivilege\Service\AuthorizeServiceFactory::class,
// 'BjyAuthorize\Service\Authorize' => 'UnicaenAuthentification\Service\AuthorizeServiceFactory', // substituion
// 'BjyAuthorize\Service\Authorize' => 'UnicaenAuthentification\Service\AuthorizeServiceFactory', // TODO déplacer le service dans UnicaenAuthentification
],
],
'view_manager' => [
......
<?php
use UnicaenPrivilege\Provider\Privilege\PrivilegePrivileges;
use UnicaenPrivilege\Provider\Rule\PrivilegeRuleProvider;
use UnicaenPrivilege\Service\Privilege\PrivilegeService;
use UnicaenPrivilege\Entity\Db\Privilege;
use UnicaenUtilisateur\Provider\Privilege\RolePrivileges;
$settings = [
'unicaen-auth' => [
'enable_privileges' => true,
],
];
if ($settings['unicaen-auth']['enable_privileges']) {
$privileges = [
'unicaen-auth' => [
/**
* L'entité associée aux privilèges peut être spécifiée via la clef de configuration ['unicaen_auth']['privilege_entity_class']
* Si elle est manquante alors la classe @see \UnicaenPrivilege\Entity\Db\Privilege est utilisée
* NB: la classe spécifiée doit hériter de @see \UnicaenPrivilege\Entity\Db\AbstractPrivilege
*/
'privilege_entity_class' => Privilege::class,
],
'bjyauthorize' => [
'resource_providers' => [
/**
* Le service Privilege peut aussi être une source de ressources,
* si on souhaite tester directement l'accès à un privilège
*/
PrivilegeService::class => [],
],
'rule_providers' => [
PrivilegeRuleProvider::class => [],
],
],
'navigation' => [
'default' => [
'home' => [
'pages' => [
'droits' => [
'pages' => [
[
'label' => "Gérer les privilèges",
'title' => "Gérer les privilèges",
'route' => 'unicaen-privilege',
'resource' => RolePrivileges::getResourceId(PrivilegePrivileges::PRIVILEGE_VOIR),
],
],
],
],
],
],
],
];
} else {
$privileges = [];
}
return array_merge_recursive($settings, $privileges);
\ No newline at end of file
-- -----------------------------------------------------
-- TABLE UNICAEN_PRIVILEGE_CATEGORIE
-- -----------------------------------------------------
CREATE SEQUENCE UNICAEN_PRIVILEGE_CATEGORIE_ID_SEQ NOCYCLE START WITH 1 INCREMENT BY 1 MINVALUE 0;
CREATE TABLE UNICAEN_PRIVILEGE_CATEGORIE (
ID NUMBER(*,0) NOT NULL,
CODE VARCHAR2(150 CHAR) NOT NULL,
LIBELLE VARCHAR2(200 CHAR) NOT NULL,
NAMESPACE VARCHAR(255),
ORDRE INT DEFAULT 0,
CONSTRAINT PK_UNICAEN_PRIVILEGE_CATEGORIE PRIMARY KEY (ID),
CONSTRAINT UN_UNICAEN_PRIVILEGE_CATEGORIE_CODE UNIQUE (CODE)
);
-- -----------------------------------------------------
-- TABLE UNICAEN_PRIVILEGE_PRIVILEGE
-- -----------------------------------------------------
CREATE SEQUENCE UNICAEN_PRIVILEGE_PRIVILEGE_ID_SEQ NOCYCLE START WITH 1 INCREMENT BY 1 MINVALUE 0;
CREATE TABLE UNICAEN_PRIVILEGE_PRIVILEGE (
ID NUMBER(*, 0) NOT NULL,
CATEGORIE_ID NUMBER(*, 0) NOT NULL,
CODE VARCHAR2(150 CHAR) NOT NULL,
LIBELLE VARCHAR2(200 CHAR) NOT NULL,
ORDRE INT DEFAULT 0,
CONSTRAINT PK_UNICAEN_PRIVILEGE_PRIVILEGE PRIMARY KEY (ID),
CONSTRAINT UN_UNICAEN_PRIVILEGE_CODE UNIQUE (CODE),
CONSTRAINT FK_UNICAEN_PRIVILEGE_CATEGORIE FOREIGN KEY (CATEGORIE_ID) REFERENCES UNICAEN_PRIVILEGE_CATEGORIE (ID) DEFERRABLE INITIALLY IMMEDIATE
);
CREATE INDEX IX_UNICAEN_PRIVILEGE_CATEGORIE ON UNICAEN_PRIVILEGE_PRIVILEGE(CATEGORIE_ID);
-- -----------------------------------------------------
-- TABLE UNICAEN_PRIVILEGE_PRIVILEGE_ROLE_LINKER
-- -----------------------------------------------------
CREATE TABLE UNICAEN_PRIVILEGE_PRIVILEGE_ROLE_LINKER (
ROLE_ID NUMBER(*, 0) NOT NULL,
PRIVILEGE_ID NUMBER(*, 0) NOT NULL,
CONSTRAINT PK_UNICAEN_PRIVILEGE_PRIVILEGE_ROLE_LINKER PRIMARY KEY (ROLE_ID, PRIVILEGE_ID),
CONSTRAINT FK_UNICAEN_PRIVILEGE_PRIVILEGE_ROLE_LINKER_ROLE FOREIGN KEY (ROLE_ID) REFERENCES UNICAEN_UTILISATEUR_ROLE (ID) DEFERRABLE INITIALLY IMMEDIATE,
CONSTRAINT FK_UNICAEN_PRIVILEGE_PRIVILEGE_ROLE_LINKER_PRIVILEGE FOREIGN KEY (PRIVILEGE_ID) REFERENCES UNICAEN_PRIVILEGE_PRIVILEGE (ID) DEFERRABLE INITIALLY IMMEDIATE
);
CREATE INDEX IX_UNICAEN_PRIVILEGE_PRIVILEGE_ROLE_LINKER_ROLE ON UNICAEN_PRIVILEGE_PRIVILEGE_ROLE_LINKER (ROLE_ID);
CREATE INDEX IX_UNICAEN_PRIVILEGE_PRIVILEGE_ROLE_LINKER_PRIVILEGE ON UNICAEN_PRIVILEGE_PRIVILEGE_ROLE_LINKER (PRIVILEGE_ID);
-- DATA
INSERT INTO UNICAEN_PRIVILEGE_CATEGORIE (
ID,
CODE,
LIBELLE,
ORDRE)
WITH tmp AS (
SELECT 1, 'utilisateur' c, 'Gestion des utilisateurs' l, 1 o FROM dual
)
SELECT
UNICAEN_PRIVILEGE_CATEGORIE_ID_SEQ.nextval,
tmp.c,
tmp.l,
tmp.o
FROM tmp;
INSERT INTO UNICAEN_PRIVILEGE_PRIVILEGE (
ID,
CATEGORIE_ID,
CODE,
LIBELLE,
ORDRE)
WITH tmp AS (
SELECT 1, 1 ca, 'utilisateur_afficher' c, 'Consulter un utilisateur' l, 1 o FROM dual UNION
SELECT 2, 1 ca, 'utilisateur_ajouter' c, 'Ajouter un utilisateur' l, 2 o FROM dual UNION
SELECT 3, 1 ca, 'utilisateur_changerstatus' c, 'Changer le statut d''un utilisateur' l, 3 o FROM dual UNION
SELECT 4, 1 ca, 'utilisateur_modifierrole' c, 'Modifier les rôles attribués à un utilisateur' l, 4 o FROM dual
)
SELECT
UNICAEN_PRIVILEGE_PRIVILEGE_ID_SEQ.nextval,
tmp.ca,
UNICAEN_PRIVILEGE_CATEGORIE_ID_SEQ.currval,
tmp.l,
tmp.o
FROM tmp;
INSERT INTO UNICAEN_PRIVILEGE_CATEGORIE (
ID,
CODE,
LIBELLE,
ORDRE)
WITH tmp AS (
SELECT 1, 'role' c, 'Gestion des rôles' l, 1 o FROM dual
)
SELECT
UNICAEN_PRIVILEGE_CATEGORIE_ID_SEQ.nextval,
tmp.c,
tmp.l,
tmp.o
FROM tmp;
INSERT INTO UNICAEN_PRIVILEGE_PRIVILEGE (
ID,
CATEGORIE_ID,
CODE,
LIBELLE,
ORDRE)
WITH tmp AS (
SELECT 1, 1 ca, 'role_afficher' c, 'Consulter les rôles' l, 1 o FROM dual UNION
SELECT 2, 1 ca, 'role_modifier' c, 'Modifier un rôle' l, 2 o FROM dual UNION
SELECT 3, 1 ca, 'role_effacer' c, 'Supprimer un rôle' l, 3 o FROM dual
)
SELECT
UNICAEN_PRIVILEGE_PRIVILEGE_ID_SEQ.nextval,
tmp.ca,
UNICAEN_PRIVILEGE_CATEGORIE_ID_SEQ.currval,
tmp.l,
tmp.o
FROM tmp;
INSERT INTO UNICAEN_PRIVILEGE_CATEGORIE (
ID,
CODE,
LIBELLE,
ORDRE)
WITH tmp AS (
SELECT 1, 'privilege' c, 'Gestion des privilèges' l, 1 o FROM dual
)
SELECT
UNICAEN_PRIVILEGE_CATEGORIE_ID_SEQ.nextval,
tmp.c,
tmp.l,
tmp.o
FROM tmp;
INSERT INTO UNICAEN_PRIVILEGE_PRIVILEGE (
ID,
CATEGORIE_ID,
CODE,
LIBELLE,
ORDRE)
WITH tmp AS (
SELECT 1, 1 ca, 'privilege_voir' c, 'Afficher les privilèges' l, 1 o FROM dual UNION
SELECT 2, 1 ca, 'privilege_ajouter' c, 'Ajouter un privilège' l, 2 o FROM dual UNION
SELECT 3, 1 ca, 'privilege_modifier' c, 'Modifier un privilège' l, 3 o FROM dual UNION
SELECT 4, 1 ca, 'privilege_supprimer' c, 'Supprimer un privilège' l, 4 o FROM dual UNION
SELECT 5, 1 ca, 'privilege_affecter' c, 'Attribuer un privilège' l, 5 o FROM dual
)
SELECT
UNICAEN_PRIVILEGE_PRIVILEGE_ID_SEQ.nextval,
tmp.ca,
UNICAEN_PRIVILEGE_CATEGORIE_ID_SEQ.currval,
tmp.l,
tmp.o
FROM tmp;
\ No newline at end of file
-- -----------------------------------------------------
-- TABLE UNICAEN_PRIVILEGE_CATEGORIE
-- -----------------------------------------------------
CREATE TABLE UNICAEN_PRIVILEGE_CATEGORIE (
ID SERIAL PRIMARY KEY,
CODE VARCHAR(150) NOT NULL,
LIBELLE VARCHAR(200) NOT NULL,
NAMESPACE VARCHAR(255),
ORDRE INTEGER DEFAULT 0
);
CREATE UNIQUE INDEX UN_UNICAEN_PRIVILEGE_CATEGORIE_CODE ON UNICAEN_PRIVILEGE_CATEGORIE (CODE);
-- -----------------------------------------------------
-- TABLE UNICAEN_PRIVILEGE_PRIVILEGE
-- -----------------------------------------------------
CREATE TABLE UNICAEN_PRIVILEGE_PRIVILEGE (
ID SERIAL PRIMARY KEY,
CATEGORIE_ID INTEGER NOT NULL,
CODE VARCHAR(150) NOT NULL,
LIBELLE VARCHAR(200) NOT NULL,
ORDRE INTEGER NOT NULL,
CONSTRAINT FK_UNICAEN_PRIVILEGE_CATEGORIE FOREIGN KEY (CATEGORIE_ID) REFERENCES UNICAEN_PRIVILEGE_CATEGORIE (ID) DEFERRABLE INITIALLY IMMEDIATE
);
CREATE UNIQUE INDEX UN_UNICAEN_PRIVILEGE_CODE ON UNICAEN_PRIVILEGE_PRIVILEGE(CODE);
CREATE INDEX IX_UNICAEN_PRIVILEGE_CATEGORIE ON UNICAEN_PRIVILEGE_PRIVILEGE(CATEGORIE_ID);
-- -----------------------------------------------------
-- TABLE UNICAEN_PRIVILEGE_PRIVILEGE_ROLE_LINKER
-- -----------------------------------------------------
CREATE TABLE UNICAEN_PRIVILEGE_PRIVILEGE_ROLE_LINKER (
ROLE_ID INTEGER NOT NULL,
PRIVILEGE_ID INTEGER NOT NULL,
CONSTRAINT PK_UNICAEN_PRIVILEGE_PRIVILEGE_ROLE_LINKER PRIMARY KEY (ROLE_ID, PRIVILEGE_ID),
CONSTRAINT FK_UNICAEN_PRIVILEGE_PRIVILEGE_ROLE_LINKER_ROLE FOREIGN KEY (ROLE_ID) REFERENCES UNICAEN_UTILISATEUR_ROLE (ID) DEFERRABLE INITIALLY IMMEDIATE,
CONSTRAINT FK_UNICAEN_PRIVILEGE_PRIVILEGE_ROLE_LINKER_PRIVILEGE FOREIGN KEY (PRIVILEGE_ID) REFERENCES UNICAEN_PRIVILEGE_PRIVILEGE (ID) DEFERRABLE INITIALLY IMMEDIATE
);
CREATE INDEX IX_UNICAEN_PRIVILEGE_PRIVILEGE_ROLE_LINKER_ROLE ON UNICAEN_PRIVILEGE_PRIVILEGE_ROLE_LINKER (ROLE_ID);
CREATE INDEX IX_UNICAEN_PRIVILEGE_PRIVILEGE_ROLE_LINKER_PRIVILEGE ON UNICAEN_PRIVILEGE_PRIVILEGE_ROLE_LINKER (PRIVILEGE_ID);
-- DATA
INSERT INTO UNICAEN_PRIVILEGE_CATEGORIE (
ID,
CODE,
LIBELLE,
ORDRE)
WITH tmp AS (
SELECT 1, 'utilisateur' c, 'Gestion des utilisateurs' l, 1 o FROM dual
)
SELECT
UNICAEN_PRIVILEGE_CATEGORIE_ID_SEQ.nextval,
tmp.c,
tmp.l,
tmp.o
FROM tmp;
INSERT INTO UNICAEN_PRIVILEGE_PRIVILEGE (
ID,
CATEGORIE_ID,
CODE,
LIBELLE,
ORDRE)
WITH tmp AS (
SELECT 1, 1 ca, 'utilisateur_afficher' c, 'Consulter un utilisateur' l, 1 o FROM dual UNION
SELECT 2, 1 ca, 'utilisateur_ajouter' c, 'Ajouter un utilisateur' l, 2 o FROM dual UNION
SELECT 3, 1 ca, 'utilisateur_changerstatus' c, 'Changer le statut d''un utilisateur' l, 3 o FROM dual UNION
SELECT 4, 1 ca, 'utilisateur_modifierrole' c, 'Modifier les rôles attribués à un utilisateur' l, 4 o FROM dual
)
SELECT
UNICAEN_PRIVILEGE_PRIVILEGE_ID_SEQ.nextval,
tmp.ca,
UNICAEN_PRIVILEGE_CATEGORIE_ID_SEQ.currval,
tmp.l,
tmp.o
FROM tmp;
INSERT INTO UNICAEN_PRIVILEGE_CATEGORIE (
ID,
CODE,
LIBELLE,
ORDRE)
WITH tmp AS (
SELECT 1, 'role' c, 'Gestion des rôles' l, 1 o FROM dual
)
SELECT
UNICAEN_PRIVILEGE_CATEGORIE_ID_SEQ.nextval,
tmp.c,
tmp.l,
tmp.o
FROM tmp;
INSERT INTO UNICAEN_PRIVILEGE_PRIVILEGE (
ID,
CATEGORIE_ID,
CODE,
LIBELLE,
ORDRE)
WITH tmp AS (
SELECT 1, 1 ca, 'role_afficher' c, 'Consulter les rôles' l, 1 o FROM dual UNION
SELECT 2, 1 ca, 'role_modifier' c, 'Modifier un rôle' l, 2 o FROM dual UNION
SELECT 3, 1 ca, 'role_effacer' c, 'Supprimer un rôle' l, 3 o FROM dual
)
SELECT
UNICAEN_PRIVILEGE_PRIVILEGE_ID_SEQ.nextval,
tmp.ca,
UNICAEN_PRIVILEGE_CATEGORIE_ID_SEQ.currval,
tmp.l,
tmp.o
FROM tmp;
INSERT INTO UNICAEN_PRIVILEGE_CATEGORIE (
ID,
CODE,
LIBELLE,
ORDRE)
WITH tmp AS (
SELECT 1, 'privilege' c, 'Gestion des privilèges' l, 1 o FROM dual
)
SELECT
UNICAEN_PRIVILEGE_CATEGORIE_ID_SEQ.nextval,
tmp.c,
tmp.l,
tmp.o
FROM tmp;
INSERT INTO UNICAEN_PRIVILEGE_PRIVILEGE (
ID,
CATEGORIE_ID,
CODE,
LIBELLE,
ORDRE)
WITH tmp AS (
SELECT 1, 1 ca, 'privilege_voir' c, 'Afficher les privilèges' l, 1 o FROM dual UNION
SELECT 2, 1 ca, 'privilege_ajouter' c, 'Ajouter un privilège' l, 2 o FROM dual UNION
SELECT 3, 1 ca, 'privilege_modifier' c, 'Modifier un privilège' l, 3 o FROM dual UNION
SELECT 4, 1 ca, 'privilege_supprimer' c, 'Supprimer un privilège' l, 4 o FROM dual UNION
SELECT 5, 1 ca, 'privilege_affecter' c, 'Attribuer un privilège' l, 5 o FROM dual
)
SELECT
UNICAEN_PRIVILEGE_PRIVILEGE_ID_SEQ.nextval,
tmp.ca,
UNICAEN_PRIVILEGE_CATEGORIE_ID_SEQ.currval,
tmp.l,
tmp.o
FROM tmp;
\ No newline at end of file
......@@ -3,8 +3,6 @@
namespace UnicaenPrivilege\Assertion;
use BjyAuthorize\Service\Authorize;
use UnicaenAuth\Service\AuthorizeService;
use UnicaenAuth\Service\UserContext;
use UnicaenAuthentification\Service\Traits\AuthorizeServiceAwareTrait;
use UnicaenAuthentification\Service\Traits\UserContextServiceAwareTrait;
use Zend\Mvc\MvcEvent;
......
<?php
namespace UnicaenPrivilege\Controller;
use UnicaenPrivilege\Service\Affectation\AffectationServiceAwareTrait;
use UnicaenPrivilege\Service\Categorie\CategorieServiceAwareTrait;
use UnicaenPrivilege\Service\Privilege\PrivilegeServiceAwareTrait;
use UnicaenUtilisateur\Service\Role\RoleServiceAwareTrait;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\JsonModel;
use Zend\View\Model\ViewModel;
class AffectationController extends AbstractActionController {
use AffectationServiceAwareTrait;
use CategorieServiceAwareTrait;
use RoleServiceAwareTrait;
use PrivilegeServiceAwareTrait;
public function indexAction() : ViewModel
{
$namespaces = $this->getCategorieService()->listerNamespaces();
$namespace = $this->params()->fromQuery('namespace');
$roles = $this->getRoleService()->getRoles();
$privileges = $this->getPrivilegeService()->getPrivilegesWithCategories($namespace);
return new ViewModel([
'roles' => $roles,
'privileges' => $privileges,
'namespaces' => $namespaces,
]);
}
public function modifierAction() : JsonModel
{
$privilege = $this->getPrivilegeService()->getRequestedPrivilege($this);
$role = $this->getRoleService()->getRequestedRole($this);
$value = $this->getAffectationService()->toggle($role,$privilege);
return new JsonModel([
'value' => $value,
]);
}
}
\ No newline at end of file
<?php
namespace UnicaenPrivilege\Controller;
use Interop\Container\ContainerInterface;
use UnicaenPrivilege\Service\Affectation\AffectationService;
use UnicaenPrivilege\Service\Categorie\CategorieService;
use UnicaenPrivilege\Service\Privilege\PrivilegeService;
use UnicaenUtilisateur\Service\Role\RoleService;
class AffectationControllerFactory {
public function __invoke(ContainerInterface $container) : AffectationController
{
/**
* @var AffectationService $affectationService
* @var CategorieService $categorieService
* @var PrivilegeService $privilegeService
* @var RoleService $roleService
*/
$affectationService = $container->get(AffectationService::class);
$categorieService = $container->get(CategorieService::class);
$privilegeService = $container->get(PrivilegeService::class);
$roleService = $container->get(RoleService::class);
/** @var AffectationController $controller*/
$controller = new AffectationController();
$controller->setAffectationService($affectationService);
$controller->setCategorieService($categorieService);
$controller->setPrivilegeService($privilegeService);
$controller->setRoleService($roleService);
return $controller;
}
}
\ No newline at end of file
......@@ -2,9 +2,11 @@
namespace UnicaenPrivilege\Controller;
use UnicaenPrivilege\Entity\Db\Categorie;
use UnicaenPrivilege\Entity\Db\CategorieInterface;
use UnicaenPrivilege\Form\Categorie\CategorieFiltreFormAwareTrait;
use UnicaenPrivilege\Form\Categorie\CategorieFormAwareTrait;
use UnicaenPrivilege\Service\Categorie\CategorieServiceAwareTrait;
use UnicaenPrivilege\Service\Privilege\PrivilegeServiceAwareTrait;
use Zend\Http\Request;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
......@@ -12,122 +14,112 @@ use Zend\View\Model\ViewModel;
class CategorieController extends AbstractActionController
{
use CategorieServiceAwareTrait;
use PrivilegeServiceAwareTrait;
use CategorieFormAwareTrait;
use CategorieFiltreFormAwareTrait;
public function indexAction() : ViewModel
public function indexAction() : array
{
/**
* @var string[] $namespaces
* @var string $namespaces
*/
$namespaces = $this->getCategorieService()->listerNamespaces();
$form = $this->categorieFiltreForm;
$namespace = $this->params()->fromQuery('namespace');
if($namespace) {
$form->get('namespace')->setValue($namespace);
$categories = $this->categorieService->findByNamespace($namespace);
}
else {
$categories = $this->categorieService->findAll();
}
/** @var Categorie[] $categories */
$categories = $this->getCategorieService()->getCategories('ordre');
$namespaceC = ($namespace === "Laissé vide !")?"":$namespace;
if ($namespace !== null AND $namespace !== "") $categories = array_filter($categories, function (Categorie $a) use ($namespaceC) { return $a->getNamespace() == $namespaceC; });
return new ViewModel([
'namespaces' => $namespaces,
'namespace' => $namespace,
'categories' => $categories,
]);
$title = "Gestion des catégories";
return compact('title', 'form', 'categories');
}
public function ajouterAction() : ViewModel
{
$categorie = new Categorie();
$form = $this->getCategorieForm();
$categorie = $this->categorieService->getEntityInstance();
$categorie->setOrdre($this->categorieService->getMaxOrdre()+1);
$form = $this->categorieForm;
$form->setAttribute('action', $this->url()->fromRoute('unicaen-privilege/categorie/ajouter', [], [], true));
$form->bind($categorie);
/** @var Request $request */
$request = $this->getRequest();
if ($request->isPost()) {
$data = $request->getPost();
if ($data = $this->params()->fromPost()) {
$form->setData($data);
if ($form->isValid()) {
$this->getCategorieService()->create($categorie);
try {
$this->categorieService->create($categorie);
$this->flashMessenger()->addSuccessMessage(sprintf("Catégorie <strong>%s</strong> créée avec succès.", $categorie->getLibelle()));
} catch (Exception $e) {
$this->flashMessenger()->addErrorMessage(sprintf("Une erreur est survenu lors de la création de la catégorie <strong>%s</strong>.", $categorie->getLibelle()));
}
}
}
$vm = new ViewModel();
$vm->setTemplate('unicaen-privilege/default/default-form');
$vm->setVariables([
'title' => "Ajout d'une nouvelle catégorie de privilège",
$view = new ViewModel();
$view->setTemplate('unicaen-privilege/categorie/template/form-categorie');
$view->setVariables([
'title' => "Ajout d'une nouvelle catégorie",
'form' => $form,
]);
return $vm;
return $view;
}
public function gererAction() : ViewModel
public function gererAction() : array
{
$categorie = $this->getCategorieService()->getRequestedCategorie($this);
$categorie = $this->categorieService->getRequestedCategorie($this);
$privileges = $this->privilegeService->findByCategorie($categorie);
$title = "Gestion de la catégorie";
return new ViewModel([
'categorie' => $categorie,
]);
return compact('title', 'categorie', 'privileges');
}
public function providerAction() : ViewModel
public function providerAction() : array
{
$categorie = $this->getCategorieService()->getRequestedCategorie($this);
$categorie = $this->categorieService->getRequestedCategorie($this);
return new ViewModel([
'title' => "Affichage du fichier fournissant la déclaration des privilèges",
'categorie' => $categorie,
]);
return compact('categorie');
}
public function modifierAction() : ViewModel
{
$categorie = $this->getCategorieService()->getRequestedCategorie($this);
$form = $this->getCategorieForm();
$categorie = $this->categorieService->getRequestedCategorie($this);
$form = $this->categorieForm;
$form->setAttribute('action', $this->url()->fromRoute('unicaen-privilege/categorie/modifier', ['categorie' => $categorie->getId()], [], true));
$form->bind($categorie);
$form->setOldLibelle($categorie->getLibelle());
$form->setOldCode($categorie->getCode());
/** @var Request $request */
$request = $this->getRequest();
if ($request->isPost()) {
$data = $request->getPost();
if ($data = $this->params()->fromPost()) {
$form->setData($data);
if ($form->isValid()) {
$this->getCategorieService()->update($categorie);
try {
$this->categorieService->update($categorie);
$this->flashMessenger()->addSuccessMessage(sprintf("Catégorie <strong>%s</strong> modifiée avec succès.", $categorie->getLibelle()));
} catch (Exception $e) {
$this->flashMessenger()->addErrorMessage(sprintf("Une erreur est survenu lors de la modification de la catégorie <strong>%s</strong>.", $categorie->getLibelle()));
}
}
}
$vm = new ViewModel();
$vm->setTemplate('unicaen-privilege/default/default-form');
$vm->setVariables([
'title' => "Modification d'une catégorie de privilège",
$view = new ViewModel();
$view->setTemplate('unicaen-privilege/categorie/template/form-categorie');
$view->setVariables([
'title' => "Modification de la catégorie",
'form' => $form,
]);
return $vm;
return $view;
}
public function supprimerAction() : ViewModel {
$categorie = $this->getCategorieService()->getRequestedCategorie($this);
/** @var Request $request */
$request = $this->getRequest();
if ($request->isPost()) {
$data = $request->getPost();
if ($data["reponse"] === "oui") $this->getCategorieService()->delete($categorie);
exit();
public function supprimerAction() : array
{
try {
$categorie = $this->categorieService->getRequestedCategorie($this);
$this->categorieService->delete($categorie);
$this->flashMessenger()->addSuccessMessage(sprintf("Catégorie <strong>%s</strong> supprimée avec succès.", $categorie->getLibelle()));
} catch (Exception $e) {
$this->flashMessenger()->addErrorMessage(sprintf("Une erreur est survenu lors de la suppression de la catégorie <strong>%s</strong>.", $categorie->getLibelle()));
}
$vm = new ViewModel();
if ($categorie !== null) {
$vm->setTemplate('unicaen-privilege/default/confirmation');
$vm->setVariables([
'title' => "Suppression de la Catégorie de privilège de " . $categorie->getLibelle(),
'text' => "La suppression est définitive êtes-vous sûr&middot;e de vouloir continuer ?",
'action' => $this->url()->fromRoute('unicaen-privilege/categorie/supprimer', ["categorie" => $categorie->getId()], [], true),
]);
}
return $vm;
return compact('categorie');
}
}
\ No newline at end of file
......@@ -3,26 +3,38 @@
namespace UnicaenPrivilege\Controller;
use Interop\Container\ContainerInterface;
use UnicaenPrivilege\Form\Categorie\CategorieFiltreForm;
use UnicaenPrivilege\Form\Categorie\CategorieForm;
use UnicaenPrivilege\Service\Categorie\CategorieService;
use UnicaenPrivilege\Service\Privilege\PrivilegeService;
class CategorieControllerFactory {
public function __invoke(ContainerInterface $container) : CategorieController
class CategorieControllerFactory
{
/**
* @var CategorieService $categorieService
* Create controller
*
* @param ContainerInterface $container
* @param string $requestedName
* @param array|null $options
* @return CategorieController|object
*/
$categorieService = $container->get(CategorieService::class);
public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
{
/**
* @var CategorieForm $categorieForm
* @var CategorieService $categorieService
* @var PrivilegeService $privilegeService
*/
$categorieService = $container->get(CategorieService::class);
$privilegeService = $container->get(PrivilegeService::class);
$categorieForm = $container->get('FormElementManager')->get(CategorieForm::class);
$categorieFiltreForm = $container->get('FormElementManager')->get(CategorieFiltreForm::class);
$controller = new CategorieController();
$controller->setCategorieService($categorieService);
$controller->setPrivilegeService($privilegeService);
$controller->setCategorieForm($categorieForm);
$controller->setCategorieFiltreForm($categorieFiltreForm);
return $controller;
}
}
\ No newline at end of file
......@@ -2,98 +2,126 @@
namespace UnicaenPrivilege\Controller;
use UnicaenPrivilege\Entity\Db\Privilege;
use UnicaenPrivilege\Form\Categorie\CategorieFiltreFormAwareTrait;
use UnicaenPrivilege\Form\Privilege\PrivilegeFormAwareTrait;
use UnicaenPrivilege\Service\Categorie\CategorieServiceAwareTrait;
use UnicaenPrivilege\Service\Privilege\PrivilegeServiceAwareTrait;
use UnicaenUtilisateur\Service\Role\RoleServiceAwareTrait;
use Zend\Http\Request;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\JsonModel;
use Zend\View\Model\ViewModel;
class PrivilegeController extends AbstractActionController {
class PrivilegeController extends AbstractActionController
{
use CategorieServiceAwareTrait;
use PrivilegeServiceAwareTrait;
use RoleServiceAwareTrait;
use PrivilegeFormAwareTrait;
use CategorieFiltreFormAwareTrait;
public function indexAction() : array
{
$form = $this->categorieFiltreForm;
$namespace = $this->params()->fromQuery('namespace');
if($namespace) {
$form->get('namespace')->setValue($namespace);
}
$roles = $this->roleService->findAll();
$privilegesByCategorie = $this->privilegeService->listByCategorie($namespace);
$title = "Attribution des privilèges";
return compact('title', 'form', 'roles', 'privilegesByCategorie');
}
public function ajouterAction() : ViewModel
{
$categorie = $this->getCategorieService()->getRequestedCategorie($this);
$privilege = new Privilege();
$form = $this->getPrivilegeForm();
$form->setAttribute('action', $this->url()->fromRoute('unicaen-privilege/privilege/ajouter', ['categorie' => $categorie->getId()], [], true));
$categorie = $this->categorieService->getRequestedCategorie($this);
$privilege = $this->privilegeService->getEntityInstance();
$privilege->setOrdre($this->privilegeService->getMaxOrdreByCategorie($categorie)+1);
$privilege->setCategorie($categorie);
$form = $this->privilegeForm;
$form->setAttribute('action', $this->url()->fromRoute('unicaen-privilege/ajouter', ['categorie' => $categorie->getId()], [], true));
$form->get('categorieId')->setValue($categorie->getId());
$form->bind($privilege);
$form->setCategorie($categorie);
/** @var Request $request */
$request = $this->getRequest();
if ($request->isPost()) {
$data = $request->getPost();
if ($data = $this->params()->fromPost()) {
$form->setData($data);
if ($form->isValid()) {
$privilege->setCategorie($categorie);
$this->getPrivilegeService()->create($privilege);
try {
$this->privilegeService->create($privilege);
$this->flashMessenger()->addSuccessMessage(sprintf("Privilège <strong>%s</strong> créé avec succès.", $privilege->getLibelle()));
} catch (Exception $e) {
$this->flashMessenger()->addErrorMessage(sprintf("Une erreur est survenu lors de la création du privilège <strong>%s</strong>.", $privilege->getLibelle()));
}
}
}
$vm = new ViewModel();
$vm->setTemplate('unicaen-privilege/default/default-form');
$vm->setVariables([
$view = new ViewModel();
$view->setTemplate('unicaen-privilege/privilege/template/form-privilege');
$view->setVariables([
'title' => "Ajout d'un nouveau privilège",
'form' => $form,
]);
return $vm;
return $view;
}
public function modifierAction() : ViewModel
{
$privilege = $this->getPrivilegeService()->getRequestedPrivilege($this);
$form = $this->getPrivilegeForm();
$form->setAttribute('action', $this->url()->fromRoute('unicaen-privilege/privilege/modifier', ['privilege' => $privilege->getId()], [], true));
$privilege = $this->privilegeService->getRequestedPrivilege($this);
$form = $this->privilegeForm;
$form->setAttribute('action', $this->url()->fromRoute('unicaen-privilege/modifier', ['privilege' => $privilege->getId()], [], true));
$form->get('categorieId')->setValue($privilege->getCategorie()->getId());
$form->bind($privilege);
$form->setCategorie($privilege->getCategorie());
$form->setOldLibelle($privilege->getLibelle());
$form->setOldCode($privilege->getCode());
/** @var Request $request */
$request = $this->getRequest();
if ($request->isPost()) {
$data = $request->getPost();
if ($data = $this->params()->fromPost()) {
$form->setData($data);
if ($form->isValid()) {
$this->getPrivilegeService()->update($privilege);
try {
$this->privilegeService->update($privilege);
$this->flashMessenger()->addSuccessMessage(sprintf("Privilège <strong>%s</strong> modifié avec succès.", $privilege->getLibelle()));
} catch (Exception $e) {
$this->flashMessenger()->addErrorMessage(sprintf("Une erreur est survenu lors de la modification du privilège <strong>%s</strong>.", $privilege->getLibelle()));
}
}
}
$vm = new ViewModel();
$vm->setTemplate('unicaen-privilege/default/default-form');
$vm->setVariables([
'title' => "Modification d'un privilège",
$view = new ViewModel();
$view->setTemplate('unicaen-privilege/privilege/template/form-privilege');
$view->setVariables([
'title' => "Modification privilège",
'form' => $form,
]);
return $vm;
return $view;
}
public function supprimerAction() : ViewModel
public function attribuerAction(): ViewModel
{
$privilege = $this->getPrivilegeService()->getRequestedPrivilege($this);
/** @var Request $request */
$request = $this->getRequest();
if ($request->isPost()) {
$data = $request->getPost();
if ($data["reponse"] === "oui") $this->getPrivilegeService()->delete($privilege);
exit();
$privilege = $this->privilegeService->getRequestedPrivilege($this);
$role = $this->roleService->getRequestedRole($this);
$this->privilegeService->toggle($role,$privilege);
$viewModel = new ViewModel();
$viewModel
->setVariables(compact('privilege', 'role'))
->setTerminal(true);
return $viewModel;
}
$vm = new ViewModel();
if ($privilege !== null) {
$vm->setTemplate('unicaen-privilege/default/confirmation');
$vm->setVariables([
'title' => "Suppression du privilège " . $privilege->getLibelle(),
'text' => "La suppression est définitive êtes-vous sûr&middot;e de vouloir continuer ?",
'action' => $this->url()->fromRoute('unicaen-privilege/privilege/supprimer', ["privilege" => $privilege->getId()], [], true),
]);
public function supprimerAction() : array
{
try {
$privilege = $this->privilegeService->getRequestedPrivilege($this);
$this->privilegeService->delete($privilege);
$this->flashMessenger()->addSuccessMessage(sprintf("Privilège <strong>%s</strong> supprimé avec succès.", $privilege->getLibelle()));
} catch (Exception $e) {
$this->flashMessenger()->addErrorMessage(sprintf("Une erreur est survenu lors de la suppression du privilège <strong>%s</strong>.", $privilege->getLibelle()));
}
return $vm;
return compact('privilege');
}
}
\ No newline at end of file
......@@ -3,34 +3,42 @@
namespace UnicaenPrivilege\Controller;
use Interop\Container\ContainerInterface;
use UnicaenPrivilege\Form\Categorie\CategorieFiltreForm;
use UnicaenPrivilege\Form\Privilege\PrivilegeForm;
use UnicaenPrivilege\Service\Categorie\CategorieService;
use UnicaenPrivilege\Service\Privilege\PrivilegeService;
use UnicaenUtilisateur\Service\Role\RoleService;
class PrivilegeControllerFactory {
class PrivilegeControllerFactory
{
/**
* Create controller
*
* @param ContainerInterface $container
* @return PrivilegeController
* @param string $requestedName
* @param array|null $options
* @return PrivilegeController|object
*/
public function __invoke(ContainerInterface $container) : PrivilegeController
public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
{
/**
* @var CategorieService $categorieService
* @var PrivilegeService $privilegeService
* @var RoleService $roleService
*/
$categorieService = $container->get(CategorieService::class);
$privilegeService = $container->get(PrivilegeService::class);
/**
* @var PrivilegeForm $privilegeForm
*/
$roleService = $container->get(RoleService::class);
$privilegeForm = $container->get('FormElementManager')->get(PrivilegeForm::class);
$categorieFiltreForm = $container->get('FormElementManager')->get(CategorieFiltreForm::class);
$controller = new PrivilegeController();
$controller->setCategorieService($categorieService);
$controller->setPrivilegeService($privilegeService);
$controller->setRoleService($roleService);
$controller->setPrivilegeForm($privilegeForm);
$controller->setCategorieFiltreForm($categorieFiltreForm);
return $controller;
}
}
\ No newline at end of file
......@@ -8,142 +8,175 @@ use UnicaenPrivilege\Provider\Privilege\Privileges;
use UnicaenUtilisateur\Entity\Db\RoleInterface;
use Zend\Permissions\Acl\Resource\ResourceInterface;
/**
* Privilege entity abstract mother class.
*
* @ORM\MappedSuperclass
*/
abstract class AbstractPrivilege implements PrivilegeInterface, ResourceInterface
{
/**
* @var int
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string
* @ORM\Column(name="code", type="string", length=150, unique=false, nullable=false)
*/
protected $code;
/**
* @var string
* @ORM\Column(name="libelle", type="string", length=200, unique=false, nullable=false)
*/
protected $libelle;
/**
* @var int
* @ORM\Column(name="ordre", type="integer", unique=false, nullable=true)
*/
protected $ordre;
/**
* @var Categorie
* @ORM\ManyToOne(targetEntity="Categorie", inversedBy="privilege")
* @ORM\JoinColumn(name="categorie_id", referencedColumnName="id")
* @var CategorieInterface
*/
protected $categorie;
/**
* @ORM\ManyToMany(targetEntity="UnicaenAuth\Entity\Db\Role",cascade={"all"})
* @ORM\JoinTable(
* name="role_privilege",
* joinColumns={@ORM\JoinColumn(name="privilege_id", referencedColumnName="id", onDelete="cascade")},
* inverseJoinColumns={@ORM\JoinColumn(name="role_id", referencedColumnName="id", onDelete="cascade")}
*
* )
* @var Collection
*/
protected $role;
protected $roles;
/**
* Constructor
*/
public function __construct()
{
$this->role = new ArrayCollection();
$this->roles = new ArrayCollection();
}
/**
* @param string $code
* @return Privilege
* @return string
*/
public function setCode(string $code) : PrivilegeInterface
public function __toString()
{
$this->code = $code;
return $this->getLibelle();
}
/**
* Get id.
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set id.
*
* @param int $id
* @return PrivilegeInterface
*/
public function setId($id)
{
$this->id = (int)$id;
return $this;
}
/**
* Get code.
*
* @return string
*/
public function getCode() : ?string
public function getCode()
{
return $this->code;
}
public function getFullCode() : string
/**
* Set code.
*
* @param string $code
* @return PrivilegeInterface
*/
public function setCode($code)
{
return $this->getCategorie()->getCode() . '-' . $this->getCode();
$this->code = $code;
return $this;
}
/**
* @param string $libelle
* @return Privilege
* Get code with category.
*
* @return string
*/
public function setLibelle(string $libelle) : PrivilegeInterface
public function getFullCode()
{
$this->libelle = $libelle;
return $this;
return sprintf('%s-%s', $this->categorie->getCode(), $this->getCode());
}
/**
* Get libelle
* Get libelle.
*
* @return string
*/
public function getLibelle() : ?string
public function getLibelle()
{
return $this->libelle;
}
/**
* Set libelle.
*
* @param string $libelle
* @return PrivilegeInterface
*/
public function setLibelle($libelle)
{
$this->libelle = $libelle;
return $this;
}
/**
* Get ordre.
*
* @return integer
*/
function getOrdre() : ?int
function getOrdre()
{
return $this->ordre;
}
/**
* Set ordre.
*
* @param integer $ordre
* @return self
* @return PrivilegeInterface
*/
function setOrdre(int $ordre) : PrivilegeInterface
function setOrdre($ordre)
{
$this->ordre = $ordre;
$this->ordre = (int)$ordre;
return $this;
}
/**
* @return integer
* Get categorie.
*
* @return CategorieInterface
*/
public function getId() : int
public function getCategorie()
{
return $this->id;
return $this->categorie;
}
/**
* @param Categorie|null $categorie
* @return self
* Set categorie.
*
* @param CategorieInterface $categorie
* @return PrivilegeInterface
*/
public function setCategorie(?Categorie $categorie = null) : PrivilegeInterface
public function setCategorie(CategorieInterface $categorie)
{
$this->categorie = $categorie;
......@@ -151,53 +184,59 @@ abstract class AbstractPrivilege implements PrivilegeInterface, ResourceInterfac
}
/**
* @return Categorie
* @return Collection
*/
public function getCategorie() : ?Categorie
public function getRoles()
{
return $this->categorie;
return $this->roles;
}
/**
* Add role.
*
* @param RoleInterface $role
* @return self
* @return PrivilegeInterface
*/
public function addRole(RoleInterface $role) : PrivilegeInterface
public function addRole(RoleInterface $role)
{
$this->role->add($role);
$this->roles->add($role);
$role->addPrivilege($this);
return $this;
}
/**
* Remove role.
*
* @param RoleInterface $role
* @return self
* @return PrivilegeInterface
*/
public function removeRole(RoleInterface $role) : PrivilegeInterface
public function removeRole(RoleInterface $role)
{
$this->role->removeElement($role);
$this->roles->removeElement($role);
$role->removePrivilege($this);
return $this;
}
/**
* @return Collection
* Check privilege role
*
* @param RoleInterface $role
* @return bool
*/
public function getRole() : Collection
function hasRole(RoleInterface $role)
{
return $this->role;
foreach ($this->roles as $r) {
if ($r === $role) return true;
}
/**
* @return string
*/
public function __toString() : string
{
return $this->getLibelle();
return false;
}
/**
* @return string
*/
public function getResourceId() : string
public function getResourceId()
{
return Privileges::getResourceId($this);
}
......
......@@ -3,144 +3,214 @@
namespace UnicaenPrivilege\Entity\Db;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
class Categorie
class Categorie implements CategorieInterface
{
/**@var int */
/**
* @var int
*/
private $id;
/**@var string */
/**
* @var string
*/
private $code;
/** @var string */
/**
* @var string
*/
private $libelle;
/** @var string */
/**
* @var string
*/
private $namespace;
/** @var int */
/**
* @var int
*/
private $ordre;
/** @var ArrayCollection */
/**
* @var ArrayCollection
*/
private $privileges;
/**
* Categorie constructor
*/
public function __construct()
{
$this->privileges = new ArrayCollection();
}
/**
* @return string
*/
public function __toString()
{
return $this->getLibelle();
}
/**
* Get id.
*
* @return integer
*/
public function getId() : ?int
public function getId()
{
return $this->id;
}
/**
* Set id.
*
* @param int $id
* @return CategorieInterface
*/
public function setId($id)
{
$this->id = (int)$id;
return $this;
}
/**
* Get code.
*
* @return string
*/
public function getCode() : ?string
public function getCode()
{
return $this->code;
}
/**
* Set code.
*
* @param string $code
* @return Categorie
* @return CategorieInterface
*/
public function setCode(string $code) : Categorie
public function setCode($code)
{
$this->code = $code;
return $this;
}
/**
* Get libelle.
*
* @return string
*/
public function getLibelle() : ?string
public function getLibelle()
{
return $this->libelle;
}
/**
* Set libelle.
*
* @param string $libelle
* @return Categorie
* @return CategorieInterface
*/
public function setLibelle(string $libelle) : Categorie
public function setLibelle($libelle)
{
$this->libelle = $libelle;
return $this;
}
/**
* Get namespace.
*
* @return string
*/
public function getNamespace() : ?string
public function getNamespace()
{
return $this->namespace;
}
/**
* Set namespace.
*
* @param string $namespace
* @return Categorie
* @return CategorieInterface
*/
public function setNamespace(string $namespace) : Categorie
public function setNamespace($namespace)
{
$this->namespace = $namespace;
return $this;
}
/**
* Get ordre.
*
* @return int
*/
public function getOrdre() : ?int
public function getOrdre()
{
return $this->ordre;
}
/**
* Set ordre.
*
* @param int $ordre
* @return Categorie
* @return CategorieInterface
*/
public function setOrdre(int $ordre) : Categorie
public function setOrdre($ordre)
{
$this->ordre = $ordre;
$this->ordre = (int)$ordre;
return $this;
}
/**
* @param Privilege $privilege
* @return Categorie
* Get privileges.
*
* @return Collection
*/
public function addPrivilege(Privilege $privilege) : Categorie
public function getPrivileges()
{
$this->privileges->add($privilege);
return $this;
return $this->privileges;
}
/**
* @param Privilege $privilege
* @return Categorie
* Add privilege.
*
* @param PrivilegeInterface $privilege
* @return CategorieInterface
*/
public function removePrivilege(Privilege $privilege) : Categorie
public function addPrivilege(PrivilegeInterface $privilege)
{
$this->privileges->removeElement($privilege);
$this->privileges->add($privilege);
return $this;
}
/**
* @return Privilege[]
* Remove privilege.
*
* @param PrivilegeInterface $privilege
* @return CategorieInterface
*/
public function getPrivilege() : array
public function removePrivilege(PrivilegeInterface $privilege)
{
return $this->privileges->toArray();
$this->privileges->removeElement($privilege);
return $this;
}
/**
* Get privileges class name
*
* @return string
*/
public function __toString() : string
{
return $this->getLibelle();
}
public function getClassname() : string
public function getClassname()
{
return ucfirst(strtolower($this->getCode())) . "Privileges";
}
......
<?php
namespace UnicaenPrivilege\Entity\Db;
use Doctrine\Common\Collections\Collection;
interface CategorieInterface
{
/**
* @return string
*/
public function __toString();
/**
* Get id.
*
* @return integer
*/
public function getId();
/**
* Set id.
*
* @param int $id
* @return CategorieInterface
*/
public function setId($id);
/**
* Get code.
*
* @return string
*/
public function getCode();
/**
* Set code.
*
* @param string $code
* @return CategorieInterface
*/
public function setCode($code);
/**
* Get libelle.
*
* @return string
*/
public function getLibelle();
/**
* Set libelle.
*
* @param string $libelle
* @return CategorieInterface
*/
public function setLibelle($libelle);
/**
* Get namespace.
*
* @return string
*/
public function getNamespace();
/**
* Set namespace.
*
* @param string $namespace
* @return CategorieInterface
*/
public function setNamespace($namespace);
/**
* Get ordre.
*
* @return int
*/
public function getOrdre();
/**
* Set ordre.
*
* @param int $ordre
* @return CategorieInterface
*/
public function setOrdre($ordre);
/**
* Get privileges.
*
* @return Collection
*/
public function getPrivileges();
/**
* Add privilege.
*
* @param PrivilegeInterface $privilege
* @return CategorieInterface
*/
public function addPrivilege(PrivilegeInterface $privilege);
/**
* Remove privilege.
*
* @param PrivilegeInterface $privilege
* @return CategorieInterface
*/
public function removePrivilege(PrivilegeInterface $privilege);
/**
* Get privileges class name
*
* @return string
*/
public function getClassname();
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
<entity name="UnicaenPrivilege\Entity\Db\Categorie" table="unicaen_privilege_categorie">
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
<entity name="UnicaenPrivilege\Entity\Db\Categorie" table="UNICAEN_PRIVILEGE_CATEGORIE">
<id name="id" type="integer" column="id">
<id name="id" type="integer" column="ID">
<generator strategy="IDENTITY"/>
</id>
<field name="code" type="string" column="code" length="150" nullable="false"/>
<field name="libelle" type="string" column="libelle" length="200" nullable="false"/>
<field name="ordre" type="integer" column="ordre" nullable="false"/>
<field name="namespace" type="string" column="namespace" length="256" nullable="true"/>
<field name="code" type="string" column="CODE" length="150" nullable="false"/>
<field name="libelle" type="string" column="LIBELLE" length="200" nullable="false"/>
<field name="namespace" type="string" column="NAMESPACE" length="256" nullable="true"/>
<field name="ordre" type="integer" column="ORDRE" nullable="false"/>
<one-to-many field="privileges" target-entity="UnicaenPrivilege\Entity\Db\Privilege" mapped-by="categorie"/>
<one-to-many target-entity="UnicaenPrivilege\Entity\Db\Privilege" mapped-by="categorie" field="privileges"/>
</entity>
</doctrine-mapping>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment