Commit 807b12d8 authored by Thomas Hamel's avatar Thomas Hamel
Browse files

amélioration des privilèges liés aux domaines HAL

parent 30e12155
Loading
Loading
Loading
Loading
+13 −1
Changes for doc/release-notes/8.1.0/03_domaine_hal.sql: 13 added lines, 1 removed line.
Original line number Diff line number Diff line
--
-- DomaineHal
--
-- Version 8.1.0
--

--
-- Ajout des informations concernant l'import des domaines HAL
--
INSERT INTO source(id, code, libelle, etablissement_id, importable)
VALUES (7, 'HAL', 'HAL', null, true) ON CONFLICT DO NOTHING;;

--Suppression des données existantes concernant l'import des domaines HAL
--Suppression des possibles données existantes concernant l'import des domaines HAL
drop view if exists v_diff_domaine_hal;
drop view if exists src_domaine_hal;
drop table if exists tmp_domaine_hal;
@@ -112,6 +121,9 @@ CREATE TABLE IF NOT EXISTS public.domaine_hal_these
    domaine_id bigint NOT NULL
);

--
-- Ajout des privilèges liés à la gestion des domaines HAL
--
insert into PRIVILEGE(ID, CATEGORIE_ID, CODE, LIBELLE, ORDRE)
with d(ordre, code, lib) as (
    select 3100, 'modification-domaines-hal-these', 'Modifier les domaines HAL de sa thèse'
+15 −0
Changes for module/These/config/others/domaine-hal.config.php: 15 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
namespace These;

use Laminas\Router\Http\Segment;
use These\Assertion\These\TheseAssertion;
use These\Controller\DomaineHalSaisieController;
use These\Controller\Factory\DomaineHalSaisieControllerFactory;
use These\Form\DomaineHalSaisie\DomaineHalSaisieForm;
@@ -17,6 +18,19 @@ use UnicaenAuth\Provider\Rule\PrivilegeRuleProvider;

return [
    'bjyauthorize'    => [
        'rule_providers'     => [
            PrivilegeRuleProvider::class => [
                'allow' => [
                    [
                        'privileges' => [
                            ThesePrivileges::THESE_MODIFICATION_DOMAINES_HAL_THESE,
                        ],
                        'resources'  => ['These'],
                        'assertion'  => TheseAssertion::class,
                    ],
                ],
            ],
        ],
        'guards' => [
            PrivilegeController::class => [
                [
@@ -27,6 +41,7 @@ return [
                    'privileges' => [
                        ThesePrivileges::THESE_MODIFICATION_DOMAINES_HAL_THESE,
                    ],
                    'assertion' => TheseAssertion::class,
                ]
            ],
        ],
+4 −0
Changes for module/These/data/TheseEntityAssertion.csv: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -3,3 +3,7 @@ line;enabled;privilege;isRoleDoctorantSelected;;isStructureDuRoleRespectee;;isTh
1;1;\These\Provider\Privilege\ThesePrivileges::THESE_TOUT_FAIRE;;;;;;;;;;1;
2;1;*;1:1;;;;;;;2:0;;0;Cette thèse n'est pas la vôtre.
3;1;*;;;1:0;;;;;;;0;Votre profil dans l’application ne vous permet pas d’agir sur cette thèse.
5;1;\These\Provider\Privilege\ThesePrivileges::THESE_MODIFICATION_DOMAINES_HAL_THESE;1:1;;;;;;;2:0;;0;Vous ne pouvez pas saisir le(s) domaines HAL car vous n’êtes pas l’auteur de la thèse.
6;1;\These\Provider\Privilege\ThesePrivileges::THESE_MODIFICATION_DOMAINES_HAL_THESE;;;1:0;;;;;;;0;Votre profil dans l’application ne vous permet pas d’agir sur cette thèse.
7;1;\These\Provider\Privilege\ThesePrivileges::THESE_MODIFICATION_DOMAINES_HAL_THESE;;;;;1:0;;;;;0;L’état de la thèse ne permet pas cette opération.
8;1;\These\Provider\Privilege\ThesePrivileges::THESE_MODIFICATION_DOMAINES_HAL_THESE;;;;;;;;;;1;
+43 −14
Changes for module/These/src/These/Assertion/These/GeneratedTheseEntityAssertion.php: 43 added lines, 14 removed lines.
Original line number Diff line number Diff line
@@ -2,18 +2,19 @@

namespace These\Assertion\These;

use Application\Assertion\Exception\UnexpectedPrivilegeException as UnexpectedPrivilegeException;

/**
 * Classe mère d'Assertion.
 *
 * Générée à partir du fichier
 * /home/gauthierb/workspace/sygal/module/These/data/TheseEntityAssertion.csv.
 * Générée avec la ligne de commande 'bin/assertions/generate-assertion --file
 * module/These/data/TheseEntityAssertion.csv'.
 *
 * @author Application\Assertion\Generator\AssertionGenerator
 * @date 29/11/2022 10:42:11
 * @date 25/03/2024 12:45:24
 */
abstract class GeneratedTheseEntityAssertion
{

    protected $failureMessage;

    protected $linesTrace = [
@@ -26,7 +27,7 @@ abstract class GeneratedTheseEntityAssertion
     * @param string $privilege
     * @return bool
     */
    public function assertAsBoolean($privilege)
    public function assertAsBoolean(string $privilege) : bool
    {
        $this->failureMessage = null;

@@ -54,37 +55,63 @@ abstract class GeneratedTheseEntityAssertion
            }
        }

        throw new \Application\Assertion\Exception\UnexpectedPrivilegeException(
        if ($privilege === \These\Provider\Privilege\ThesePrivileges::THESE_MODIFICATION_DOMAINES_HAL_THESE) {
        //--------------------------------------------------------------------------------------
            /* line 5 */
            $this->linesTrace[] = '/* line 5 */';
            if ($this->isRoleDoctorantSelected() /* test 1 */ && 
                ! $this->isUtilisateurEstAuteurDeLaThese() /* test 22 */) {
                $this->failureMessage = "Vous ne pouvez pas saisir le(s) domaines HAL car vous n’êtes pas l’auteur de la thèse.";
                return false;
            }
            /* line 6 */
            $this->linesTrace[] = '/* line 6 */';
            if (! $this->isStructureDuRoleRespectee() /* test 3 */) {
                $this->failureMessage = "Votre profil dans l’application ne vous permet pas d’agir sur cette thèse.";
                return false;
            }
            /* line 7 */
            $this->linesTrace[] = '/* line 7 */';
            if (! $this->isTheseEnCours() /* test 5 */) {
                $this->failureMessage = "L’état de la thèse ne permet pas cette opération.";
                return false;
            }
            /* line 8 */
            $this->linesTrace[] = '/* line 8 */';
            return true;
        }

        throw new UnexpectedPrivilegeException(
            "Le privilège spécifié n'est pas couvert par l'assertion: $privilege. Trace : " . PHP_EOL . implode(PHP_EOL, $this->linesTrace));
    }

    /**
     * @return bool
     */
    abstract protected function isRoleDoctorantSelected();
    abstract protected function isRoleDoctorantSelected() : bool;
    /**
     * @return bool
     */
    abstract protected function isStructureDuRoleRespectee();
    abstract protected function isStructureDuRoleRespectee() : bool;
    /**
     * @return bool
     */
    abstract protected function isTheseEnCours();
    abstract protected function isTheseEnCours() : bool;
    /**
     * @return bool
     */
    abstract protected function isTheseSoutenue();
    abstract protected function isTheseSoutenue() : bool;
    /**
     * @return bool
     */
    abstract protected function isUtilisateurEstAuteurDeLaThese();
    abstract protected function isUtilisateurEstAuteurDeLaThese() : bool;
    /**
     * Retourne le contenu du fichier CSV à partir duquel a été générée cette
     * classe.
     *
     * @return string
     */
    public function loadedFileContent()
    public function loadedFileContent() : string
    {
        return <<<'EOT'
class;These\Assertion\These\GeneratedTheseEntityAssertion;;1;2;3;4;5;6;21;22;;;
@@ -92,8 +119,10 @@ line;enabled;privilege;isRoleDoctorantSelected;;isStructureDuRoleRespectee;;isTh
1;1;\These\Provider\Privilege\ThesePrivileges::THESE_TOUT_FAIRE;;;;;;;;;;1;
2;1;*;1:1;;;;;;;2:0;;0;Cette thèse n'est pas la vôtre.
3;1;*;;;1:0;;;;;;;0;Votre profil dans l’application ne vous permet pas d’agir sur cette thèse.
5;1;\These\Provider\Privilege\ThesePrivileges::THESE_MODIFICATION_DOMAINES_HAL_THESE;1:1;;;;;;;2:0;;0;Vous ne pouvez pas saisir le(s) domaines HAL car vous n’êtes pas l’auteur de la thèse.
6;1;\These\Provider\Privilege\ThesePrivileges::THESE_MODIFICATION_DOMAINES_HAL_THESE;;;1:0;;;;;;;0;Votre profil dans l’application ne vous permet pas d’agir sur cette thèse.
7;1;\These\Provider\Privilege\ThesePrivileges::THESE_MODIFICATION_DOMAINES_HAL_THESE;;;;;1:0;;;;;0;L’état de la thèse ne permet pas cette opération.
8;1;\These\Provider\Privilege\ThesePrivileges::THESE_MODIFICATION_DOMAINES_HAL_THESE;;;;;;;;;;1;
EOT;
    }


}
+1 −1
Changes for module/These/view/these/these/identite.phtml: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -50,7 +50,7 @@ $canCoEncadrantGerer = $this->isAllowed(CoEncadrantPrivileges::getResourceId(
$canMissionAfficher = $this->isAllowed(MissionEnseignementPrivileges::getResourceId(MissionEnseignementPrivileges::MISSION_ENSEIGNEMENT_VISUALISER));
$canMissionGerer    = $this->isAllowed(MissionEnseignementPrivileges::getResourceId(MissionEnseignementPrivileges::MISSION_ENSEIGNEMENT_MODIFIER));

$canDomaineHalModifier = $this->isAllowed(ThesePrivileges::getResourceId(ThesePrivileges::THESE_MODIFICATION_DOMAINES_HAL_THESE));
$canDomaineHalModifier = $this->isAllowed($these,ThesePrivileges::THESE_MODIFICATION_DOMAINES_HAL_THESE);

$canEditForcageCorrectionAutorisee = $this->isAllowed($these, DepotPrivileges::THESE_SAISIE_CORREC_AUTORISEE_FORCEE);