Commit 0372b8a3 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Doctorant : renommage adresse de contact en adresse perso ; nouvelle colonne...

Doctorant : renommage adresse de contact en adresse perso ; nouvelle colonne dans individu ; ACL pour demandes de changement d'adresse mail perso.
parent 4d81f777
Loading
Loading
Loading
Loading
+1 −0
Changes for CHANGELOG.md: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ Journal des modifications
- Traitement d'une inscription administrative reçue : précision lorsque le dossier d'admission trouvé est lié à un doctorant.
- Doctorant : nouvelle page 'consulter' ; remplacement de liens 'tableau-de-bord' par 'consulter'.
- Formation : lieu de formation (séance) visible de tous ; lien/mdp visio visible uniquement des inscrits sur liste principale.
- Doctorant : renommage adresse de contact en adresse perso ; nouvelle colonne dans individu ; ACL pour demandes de changement d'adresse mail perso.
- [FIX] Doctorant : correction de DoctorantAssertion qui interdisait l'accès au rôle Admin tech notamment.  
- [FIX] Plantage des notifications à propos des résultats de thèse passant à Admis (iterator vide à cause d'un critère de filtrage erroné).
- [FIX] TheseEtatRule : suppression d'une vérif empêchant la validation de la thèse corrigée par le président du jury (Transition d'état impossible : S → E).
+4 −0
Changes for doc/release-notes/v13/13.4.0/04_individu.sql: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line

alter table individu
    add email_perso varchar(128);
+25 −0
Changes for doc/release-notes/v13/13.4.0/05_mail_confirmation.sql: 25 added lines, 0 removed lines.
Original line number Diff line number Diff line

insert into unicaen_privilege_categorie(id, code, libelle)
select nextval('categorie_privilege_id_seq'), 'mail-confirmation', 'Cotutelle de thèse';

insert into unicaen_privilege_privilege(ID, CATEGORIE_ID, CODE, LIBELLE, ORDRE)
with d(ordre, code, lib) as (
    select 10, 'consulter-toutes', 'Consulter une demande de changement d''adresse électronique de n''importe quel individu' union
    select 20, 'consulter-miennes', 'Consulter une demande de changement d''adresse électronique me concernant' union
    select 30, 'ajouter-toutes', 'Créer une demande de changement d''adresse électronique de n''importe quel individu' union
    select 40, 'ajouter-miennes', 'Créer une demande de changement d''adresse électronique me concernant' union
    select 30, 'modifier-toutes', 'Modifier une demande de changement d''adresse électronique de n''importe quel individu' union
    select 40, 'modifier-miennes', 'Modifier une demande de changement d''adresse électronique me concernant' union
    select 50, 'supprimer-toutes', 'Supprimer une demande de changement d''adresse électronique de n''importe quel individu' union
    select 60, 'supprimer-miennes', 'Supprimer une demande de changement d''adresse électronique me concernant'
)
select nextval('privilege_id_seq'), cp.id, d.code, d.lib, d.ordre
from d join unicaen_privilege_categorie cp on cp.CODE = 'mail-confirmation'
;

call privilege__grant_privileges_to_profiles('mail-confirmation',
                                             ARRAY['consulter-toutes', 'ajouter-toutes', 'modifier-toutes', 'supprimer-toutes'],
                                             ARRAY['ADMIN_TECH']);
call privilege__grant_privileges_to_profiles('mail-confirmation',
                                             ARRAY['consulter-miennes', 'ajouter-miennes', 'modifier-miennes', 'supprimer-miennes'],
                                             ARRAY['DOCTORANT']);
+1 −1
Changes for module/Admission/src/Admission/Rule/Email/AdmissionExtractionEmailRule.php: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@ class AdmissionExtractionEmailRule
    public function __construct()
    {
        $this->emailAddressExtractor = fn($i) => ($i instanceof Individu)
            ? ($i->getEmailContact() ?: $i->getEmailPro() ?: $i->getEmailUtilisateur())
            ? ($i->getEmailPerso() ?: $i->getEmailPro() ?: $i->getEmailUtilisateur())
            : '';
    }

+15 −15
Changes for module/Admission/src/Admission/Service/Notification/NotificationFactory.php: 15 added lines, 15 removed lines.
Original line number Diff line number Diff line
@@ -44,7 +44,7 @@ class NotificationFactory extends NF
    {
        $notif = new Notification();
        $individu = $admission->getIndividu();
        $email = $individu->getEmailContact() ?: $individu->getEmailPro() ?: $individu->getEmailUtilisateur();
        $email = $individu->getEmailPerso() ?: $individu->getEmailPro() ?: $individu->getEmailUtilisateur();
        if (!$email) {
            throw new RuntimeException("Anomalie bloquante : aucune adresse mail disponible pour l'étudiant {$individu}");
        }
@@ -94,7 +94,7 @@ class NotificationFactory extends NF
    {
        $admission = $admissionValidation->getTarget();
        $individu = $admission->getIndividu();
        $email = $individu->getEmailContact() ?: $individu->getEmailPro() ?: $individu->getEmailUtilisateur();
        $email = $individu->getEmailPerso() ?: $individu->getEmailPro() ?: $individu->getEmailUtilisateur();
        if (!$email) {
            throw new RuntimeException("Anomalie bloquante : aucune adresse mail disponible pour l'étudiant {$individu}");
        }
@@ -110,11 +110,11 @@ class NotificationFactory extends NF
        $inscription = $admission->getInscription()->first() ?: null;
        $cc = [];
        if ($individuDirecteur = $inscription?->getDirecteur()) {
            $email = $individuDirecteur->getEmailContact() ?: $individuDirecteur->getEmailPro() ?: $individuDirecteur->getEmailUtilisateur() ?: $inscription->getEmailDirecteurThese();
            $email = $individuDirecteur->getEmailPerso() ?: $individuDirecteur->getEmailPro() ?: $individuDirecteur->getEmailUtilisateur() ?: $inscription->getEmailDirecteurThese();
            $cc[$email] = $individuDirecteur->getNomComplet();
        }
        if ($individuCodirecteur = $inscription?->getCoDirecteur()) {
            $email = $individuCodirecteur->getEmailContact() ?: $individuCodirecteur->getEmailPro() ?: $individuCodirecteur->getEmailUtilisateur() ?: $inscription->getEmailDirecteurThese();
            $email = $individuCodirecteur->getEmailPerso() ?: $individuCodirecteur->getEmailPro() ?: $individuCodirecteur->getEmailUtilisateur() ?: $inscription->getEmailDirecteurThese();
            $cc[$email] = $individuCodirecteur->getNomComplet();
        }
        if ($admissionValidation->getTypeValidation()->getCode() === TypeValidation::CODE_ATTESTATION_HONNEUR) {
@@ -151,7 +151,7 @@ class NotificationFactory extends NF
    {
        $admission = $admissionValidation->getTarget();
        $individu = $admission->getIndividu();
        $email = $individu->getEmailContact() ?: $individu->getEmailPro() ?: $individu->getEmailUtilisateur();
        $email = $individu->getEmailPerso() ?: $individu->getEmailPro() ?: $individu->getEmailUtilisateur();

        $vars = $this->createTemplateVarsForOperation($admissionValidation);

@@ -167,7 +167,7 @@ class NotificationFactory extends NF
        if(!empty($inscription->getDirecteur())){
            /** @var Individu $directeur */
            $directeur = $admission->getInscription()->first()->getDirecteur();
            $emailDirecteur = $directeur->getEmailContact() ?: $directeur->getEmailPro() ?: $directeur->getEmailUtilisateur() ?: $inscription->getEmailDirecteurThese();
            $emailDirecteur = $directeur->getEmailPerso() ?: $directeur->getEmailPro() ?: $directeur->getEmailUtilisateur() ?: $inscription->getEmailDirecteurThese();
            $notif->setCc([$emailDirecteur => $directeur->getNomComplet()]);
        }

@@ -233,7 +233,7 @@ class NotificationFactory extends NF
        $admissionAvis = $notificationAvisAdmission->getAdmissionAvis();
        $admission = $admissionAvis->getTarget();
        $individu = $admission->getIndividu();
        $email = $individu->getEmailContact() ?: $individu->getEmailPro() ?: $individu->getEmailUtilisateur();
        $email = $individu->getEmailPerso() ?: $individu->getEmailPro() ?: $individu->getEmailUtilisateur();
        if (!$email) {
            throw new RuntimeException("Anomalie bloquante : aucune adresse mail disponible pour l'étudiant {$individu}");
        }
@@ -253,11 +253,11 @@ class NotificationFactory extends NF
        $inscription = $admission->getInscription()->first() ?: null;
        $cc = [];
        if ($individuDirecteur = $inscription?->getDirecteur()) {
            $email = $individuDirecteur->getEmailContact() ?: $individuDirecteur->getEmailPro() ?: $individuDirecteur->getEmailUtilisateur() ?: $inscription->getEmailDirecteurThese();
            $email = $individuDirecteur->getEmailPerso() ?: $individuDirecteur->getEmailPro() ?: $individuDirecteur->getEmailUtilisateur() ?: $inscription->getEmailDirecteurThese();
            $cc[$email] = $individuDirecteur->getNomComplet();
        }
        if ($individuCodirecteur = $inscription?->getCoDirecteur()) {
            $email = $individuCodirecteur->getEmailContact() ?: $individuCodirecteur->getEmailPro() ?: $individuCodirecteur->getEmailUtilisateur() ?: $inscription->getEmailDirecteurThese();
            $email = $individuCodirecteur->getEmailPerso() ?: $individuCodirecteur->getEmailPro() ?: $individuCodirecteur->getEmailUtilisateur() ?: $inscription->getEmailDirecteurThese();
            $cc[$email] = $individuCodirecteur->getNomComplet();
        }

@@ -310,7 +310,7 @@ class NotificationFactory extends NF
        $admissionAvis = $notificationAvisAdmission->getAdmissionAvis();
        $admission = $admissionAvis->getTarget();
        $individu = $admission->getIndividu();
        $email = $individu->getEmailContact() ?: $individu->getEmailPro() ?: $individu->getEmailUtilisateur();
        $email = $individu->getEmailPerso() ?: $individu->getEmailPro() ?: $individu->getEmailUtilisateur();
        if (!$email) {
            throw new RuntimeException("Anomalie bloquante : aucune adresse mail disponible pour l'étudiant {$individu}");
        }
@@ -332,7 +332,7 @@ class NotificationFactory extends NF
        if(!empty($inscription->getDirecteur())){
            /** @var Individu $directeur */
            $directeur = $admission->getInscription()->first()->getDirecteur();
            $emailDirecteur = $directeur->getEmailContact() ?: $directeur->getEmailPro() ?: $directeur->getEmailUtilisateur() ?: $inscription->getEmailDirecteurThese();
            $emailDirecteur = $directeur->getEmailPerso() ?: $directeur->getEmailPro() ?: $directeur->getEmailUtilisateur() ?: $inscription->getEmailDirecteurThese();
            $cc = [$emailDirecteur => $directeur->getNomComplet()];
        }

@@ -384,7 +384,7 @@ class NotificationFactory extends NF
    {
        $admission = $admissionAvis->getTarget();
        $individu = $admission->getIndividu();
        $email = $individu->getEmailContact() ?: $individu->getEmailPro() ?: $individu->getEmailUtilisateur();
        $email = $individu->getEmailPerso() ?: $individu->getEmailPro() ?: $individu->getEmailUtilisateur();
        if (!$email) {
            throw new RuntimeException("Anomalie bloquante : aucune adresse mail disponible pour l'étudiant {$individu}");
        }
@@ -411,7 +411,7 @@ class NotificationFactory extends NF
        if(!empty($inscription->getDirecteur())){
            /** @var Individu $directeur */
            $directeur = $admission->getInscription()->first()->getDirecteur();
            $emailDirecteur = $directeur->getEmailContact() ?: $directeur->getEmailPro() ?: $directeur->getEmailUtilisateur() ?: $inscription->getEmailDirecteurThese();
            $emailDirecteur = $directeur->getEmailPerso() ?: $directeur->getEmailPro() ?: $directeur->getEmailUtilisateur() ?: $inscription->getEmailDirecteurThese();
            $notif->setCc([$emailDirecteur => $directeur->getNomComplet()]);
        }

@@ -442,7 +442,7 @@ class NotificationFactory extends NF
    {
        $admission = $admissionAvis->getTarget();
        $individu = $admission->getIndividu();
        $email = $individu->getEmailContact() ?: $individu->getEmailPro() ?: $individu->getEmailUtilisateur();
        $email = $individu->getEmailPerso() ?: $individu->getEmailPro() ?: $individu->getEmailUtilisateur();
        if (!$email) {
            throw new RuntimeException("Anomalie bloquante : aucune adresse mail disponible pour l'étudiant {$individu}");
        }
@@ -461,7 +461,7 @@ class NotificationFactory extends NF
        if(!empty($inscription->getDirecteur())){
            /** @var Individu $directeur */
            $directeur = $admission->getInscription()->first()->getDirecteur();
            $emailDirecteur = $directeur->getEmailContact() ?: $directeur->getEmailPro() ?: $directeur->getEmailUtilisateur() ?: $inscription->getEmailDirecteurThese();
            $emailDirecteur = $directeur->getEmailPerso() ?: $directeur->getEmailPro() ?: $directeur->getEmailUtilisateur() ?: $inscription->getEmailDirecteurThese();
            $notif->setCc([$emailDirecteur => $directeur->getNomComplet()]);
        }

Loading