Search in sources :

Example 1 with Individu

use of fr.univlorraine.ecandidat.entities.ecandidat.Individu in project esup-ecandidat by EsupPortail.

the class UserController method connectOther.

/**
 * Connect un membre de commission ou centre cand
 * @param  username
 *                      le username
 * @return          le user connecte
 */
private SecurityUser connectOther(final String username) {
    if (loadBalancingController.isLoadBalancingCandidatMode()) {
        return null;
    }
    List<GrantedAuthority> authoritiesListe = new ArrayList<>();
    final List<DroitProfilInd> listeDroitProfilInd = new ArrayList<>();
    final Individu ind = individuController.getIndividu(username);
    final PreferenceInd pref = (ind != null ? ind.getPreferenceInd() : null);
    if (ind != null) {
        // On recherche les profils autorisé (ctrCand ou commission pour
        // l'utilisateur suivant son login --> On ajoute à la liste
        listeDroitProfilInd.addAll(droitProfilController.searchDroitByLogin(username));
        /* Création de la liste d'autorities */
        SecurityCentreCandidature ctrCand = null;
        SecurityCommission commission = null;
        /* On place la commission favorite si elle existe en tete */
        if (pref != null && pref.getIdCommPref() != null) {
            final Optional<DroitProfilInd> optComm = listeDroitProfilInd.stream().filter(droit -> droit.getCommissionMembre() != null && droit.getCommissionMembre().getCommission() != null && pref.getIdCommPref().equals(droit.getCommissionMembre().getCommission().getIdComm())).findFirst();
            if (optComm.isPresent()) {
                Collections.swap(listeDroitProfilInd, 0, listeDroitProfilInd.indexOf(optComm.get()));
            }
        }
        /* On place le centre de candidature favorit si il existe en tete */
        if (pref != null && pref.getIdCtrCandPref() != null) {
            final Optional<DroitProfilInd> optCtrCand = listeDroitProfilInd.stream().filter(droit -> droit.getGestionnaire() != null && droit.getGestionnaire().getCentreCandidature() != null && pref.getIdCtrCandPref().equals(droit.getGestionnaire().getCentreCandidature().getIdCtrCand())).findFirst();
            if (optCtrCand.isPresent()) {
                Collections.swap(listeDroitProfilInd, 0, listeDroitProfilInd.indexOf(optCtrCand.get()));
            }
        }
        /* On parcourt la liste */
        for (final DroitProfilInd droitProfilInd : listeDroitProfilInd) {
            String codeRole = null;
            if (droitProfilInd.getDroitProfil().isDroitProfilGestionnaireCandidat()) {
                codeRole = ConstanteUtils.ROLE_GESTION_CANDIDAT;
            } else if (droitProfilInd.getDroitProfil().isDroitProfilGestionnaireCandidatLS()) {
                codeRole = ConstanteUtils.ROLE_GESTION_CANDIDAT_LS;
            } else if (droitProfilInd.getDroitProfil().isDroitProfilGestionnaireCtrCand()) {
                codeRole = ConstanteUtils.ROLE_CENTRE_CANDIDATURE;
                final Gestionnaire gestionnaire = droitProfilInd.getGestionnaire();
                if (ctrCand == null && gestionnaire != null && gestionnaire.getCentreCandidature() != null && gestionnaire.getCentreCandidature().getTesCtrCand()) {
                    final List<Integer> listComm = new ArrayList<>();
                    gestionnaire.getCommissions().forEach(e -> listComm.add(e.getIdComm()));
                    ctrCand = new SecurityCentreCandidature(droitProfilInd.getGestionnaire().getCentreCandidature(), new ArrayList<>(droitProfilInd.getDroitProfil().getDroitProfilFoncs()), individuController.getCodCgeForGestionnaire(gestionnaire, username), false, gestionnaire.getTemAllCommGest(), listComm);
                }
            } else if (droitProfilInd.getDroitProfil().isDroitProfilCommission()) {
                codeRole = ConstanteUtils.ROLE_COMMISSION;
                final CommissionMembre membre = droitProfilInd.getCommissionMembre();
                if (commission == null && membre != null && membre.getCommission() != null && membre.getCommission().getTesComm() && membre.getCommission().getCentreCandidature().getTesCtrCand()) {
                    commission = new SecurityCommission(droitProfilInd.getCommissionMembre().getCommission(), new ArrayList<>(droitProfilInd.getDroitProfil().getDroitProfilFoncs()), false);
                }
            }
            if (codeRole != null) {
                final SimpleGrantedAuthority sga = new SimpleGrantedAuthority(codeRole);
                if (!authoritiesListe.contains(sga)) {
                    authoritiesListe.add(sga);
                }
            }
        }
        // gestion des gestionnaires de candidat
        authoritiesListe = traiteDroitGestionnaireCandidat(authoritiesListe, ctrCand, commission);
        // on verifie qu'il y a bien des droits!
        if (authoritiesListe.size() > 0) {
            return new SecurityUserGestionnaire(username, getDisplayNameFromLdap(username), authoritiesListe, ctrCand, commission, pref);
        }
    }
    return null;
}
Also used : UsernameNotFoundException(org.springframework.security.core.userdetails.UsernameNotFoundException) UserDetailsService(org.springframework.security.core.userdetails.UserDetailsService) UI(com.vaadin.ui.UI) HttpSessionSecurityContextRepository(org.springframework.security.web.context.HttpSessionSecurityContextRepository) Gestionnaire(fr.univlorraine.ecandidat.entities.ecandidat.Gestionnaire) MethodInvocation(org.aopalliance.intercept.MethodInvocation) CentreCandidature(fr.univlorraine.ecandidat.entities.ecandidat.CentreCandidature) SecurityUserGestionnaire(fr.univlorraine.ecandidat.services.security.SecurityUserGestionnaire) CustomException(fr.univlorraine.ecandidat.utils.CustomException) SecurityCommission(fr.univlorraine.ecandidat.services.security.SecurityCommission) CompteMinima(fr.univlorraine.ecandidat.entities.ecandidat.CompteMinima) Page(com.vaadin.server.Page) PreferenceInd(fr.univlorraine.ecandidat.entities.ecandidat.PreferenceInd) SecurityContextHolder(org.springframework.security.core.context.SecurityContextHolder) PasswordHashService(fr.univlorraine.ecandidat.services.security.PasswordHashService) ConfigAttribute(org.springframework.security.access.ConfigAttribute) Droit(fr.univlorraine.ecandidat.services.security.SecurityFonc.Droit) ConstanteUtils(fr.univlorraine.ecandidat.utils.ConstanteUtils) MethodUtils(fr.univlorraine.ecandidat.utils.MethodUtils) Predicate(java.util.function.Predicate) SecurityCtrCandFonc(fr.univlorraine.ecandidat.services.security.SecurityCtrCandFonc) Collection(java.util.Collection) SecurityCentreCandidature(fr.univlorraine.ecandidat.services.security.SecurityCentreCandidature) Resource(javax.annotation.Resource) MethodSecurityInterceptor(org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor) SecurityUser(fr.univlorraine.ecandidat.services.security.SecurityUser) GrantedAuthority(org.springframework.security.core.GrantedAuthority) List(java.util.List) Type(com.vaadin.ui.Notification.Type) DroitProfilFonc(fr.univlorraine.ecandidat.entities.ecandidat.DroitProfilFonc) SecurityContext(org.springframework.security.core.context.SecurityContext) Optional(java.util.Optional) CommissionMembre(fr.univlorraine.ecandidat.entities.ecandidat.CommissionMembre) UsernamePasswordAuthenticationToken(org.springframework.security.authentication.UsernamePasswordAuthenticationToken) Authentication(org.springframework.security.core.Authentication) View(com.vaadin.navigator.View) MainUI(fr.univlorraine.ecandidat.MainUI) MethodInvocationUtils(org.springframework.security.util.MethodInvocationUtils) SimpleGrantedAuthority(org.springframework.security.core.authority.SimpleGrantedAuthority) DroitProfilInd(fr.univlorraine.ecandidat.entities.ecandidat.DroitProfilInd) ArrayList(java.util.ArrayList) Value(org.springframework.beans.factory.annotation.Value) PeopleLdap(fr.univlorraine.ecandidat.services.ldap.PeopleLdap) NomenclatureUtils(fr.univlorraine.ecandidat.utils.NomenclatureUtils) Notification(com.vaadin.ui.Notification) UserDetails(org.springframework.security.core.userdetails.UserDetails) SwitchUserFilter(org.springframework.security.web.authentication.switchuser.SwitchUserFilter) SecurityAuthenticationProvider(fr.univlorraine.ecandidat.services.security.SecurityAuthenticationProvider) AccessDeniedException(org.springframework.security.access.AccessDeniedException) ApplicationContext(org.springframework.context.ApplicationContext) SecurityUserCandidat(fr.univlorraine.ecandidat.services.security.SecurityUserCandidat) Commission(fr.univlorraine.ecandidat.entities.ecandidat.Commission) InsufficientAuthenticationException(org.springframework.security.authentication.InsufficientAuthenticationException) Component(org.springframework.stereotype.Component) SecurityCommissionFonc(fr.univlorraine.ecandidat.services.security.SecurityCommissionFonc) Candidat(fr.univlorraine.ecandidat.entities.ecandidat.Candidat) Individu(fr.univlorraine.ecandidat.entities.ecandidat.Individu) Collections(java.util.Collections) Assert(org.springframework.util.Assert) CommissionMembre(fr.univlorraine.ecandidat.entities.ecandidat.CommissionMembre) GrantedAuthority(org.springframework.security.core.GrantedAuthority) SimpleGrantedAuthority(org.springframework.security.core.authority.SimpleGrantedAuthority) ArrayList(java.util.ArrayList) Individu(fr.univlorraine.ecandidat.entities.ecandidat.Individu) SecurityUserGestionnaire(fr.univlorraine.ecandidat.services.security.SecurityUserGestionnaire) SimpleGrantedAuthority(org.springframework.security.core.authority.SimpleGrantedAuthority) DroitProfilInd(fr.univlorraine.ecandidat.entities.ecandidat.DroitProfilInd) SecurityCentreCandidature(fr.univlorraine.ecandidat.services.security.SecurityCentreCandidature) SecurityCommission(fr.univlorraine.ecandidat.services.security.SecurityCommission) PreferenceInd(fr.univlorraine.ecandidat.entities.ecandidat.PreferenceInd) Gestionnaire(fr.univlorraine.ecandidat.entities.ecandidat.Gestionnaire) SecurityUserGestionnaire(fr.univlorraine.ecandidat.services.security.SecurityUserGestionnaire)

Example 2 with Individu

use of fr.univlorraine.ecandidat.entities.ecandidat.Individu in project esup-ecandidat by EsupPortail.

the class CentreCandidatureController method addProfilToGestionnaire.

/**
 * Ajoute un profil à un gestionnaire
 *
 * @param ctrCand
 */
public void addProfilToGestionnaire(final CentreCandidature ctrCand) {
    /* Verrou */
    if (!lockController.getLockOrNotify(ctrCand, null)) {
        return;
    }
    DroitProfilGestionnaireWindow window = new DroitProfilGestionnaireWindow(ctrCand);
    window.addDroitProfilGestionnaireListener((individu, droit, loginApo, centreGestion, isAllCommission, listeCommission) -> {
        /* Contrôle que le client courant possède toujours le lock */
        if (lockController.getLockOrNotify(ctrCand, null)) {
            if (droitProfilController.getProfilIndByCentreCandidatureAndLogin(ctrCand, individu).size() == 0) {
                Individu ind = individuController.saveIndividu(individu);
                DroitProfilInd dpi = droitProfilController.saveProfilInd(ind, droit);
                Gestionnaire gest = new Gestionnaire(ctrCand, dpi, loginApo, centreGestion, isAllCommission, listeCommission);
                ctrCand.getGestionnaires().add(gest);
                centreCandidatureRepository.save(ctrCand);
            } else {
                Notification.show(applicationContext.getMessage("droitprofilind.gest.allready", null, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE);
            }
        }
    });
    window.addCloseListener(e -> {
        /* Suppression du lock */
        lockController.releaseLock(ctrCand);
    });
    UI.getCurrent().addWindow(window);
}
Also used : DroitProfilGestionnaireWindow(fr.univlorraine.ecandidat.views.windows.DroitProfilGestionnaireWindow) DroitProfilInd(fr.univlorraine.ecandidat.entities.ecandidat.DroitProfilInd) Individu(fr.univlorraine.ecandidat.entities.ecandidat.Individu) Gestionnaire(fr.univlorraine.ecandidat.entities.ecandidat.Gestionnaire)

Example 3 with Individu

use of fr.univlorraine.ecandidat.entities.ecandidat.Individu in project esup-ecandidat by EsupPortail.

the class DroitProfilController method deleteDroitProfilInd.

/**
 * SUpprime un droitProfilInd et supprime l'individu si il n'a pas d'autre role
 *
 * @param droitProfilInd
 */
public void deleteDroitProfilInd(final DroitProfilInd droitProfilInd) {
    droitProfilIndRepository.delete(droitProfilInd);
    Individu individu = individuController.getIndividu(droitProfilInd.getIndividu().getLoginInd());
    if (individu != null) {
        List<DroitProfilInd> liste = droitProfilIndRepository.findByIndividuLoginInd(individu.getLoginInd());
        if (liste != null && liste.size() == 0) {
            individuController.deleteIndividu(individu);
        }
    }
}
Also used : DroitProfilInd(fr.univlorraine.ecandidat.entities.ecandidat.DroitProfilInd) Individu(fr.univlorraine.ecandidat.entities.ecandidat.Individu)

Example 4 with Individu

use of fr.univlorraine.ecandidat.entities.ecandidat.Individu in project esup-ecandidat by EsupPortail.

the class DroitProfilController method getDroitProfilInds.

/**
 * @return liste des getDroitUsersProfils
 */
public List<DroitProfilInd> getDroitProfilInds(final Boolean adminMode) {
    List<DroitProfilInd> liste = new ArrayList<>();
    if (adminMode) {
        DroitProfil droitProfil = new DroitProfil(NomenclatureUtils.DROIT_PROFIL_ADMIN_TECH, NomenclatureUtils.DROIT_PROFIL_ADMIN_TECH, NomenclatureUtils.USER_NOMENCLATURE, NomenclatureUtils.USER_NOMENCLATURE, NomenclatureUtils.TYP_DROIT_PROFIL_ADM, false, true);
        Individu ind = new Individu(adminTechnique, adminTechnique, null);
        liste.add(new DroitProfilInd(ind, droitProfil));
        liste.addAll(droitProfilIndRepository.findByDroitProfilTypProfil(NomenclatureUtils.TYP_DROIT_PROFIL_ADM));
    } else {
        liste.addAll(droitProfilIndRepository.findByDroitProfilTypProfil(NomenclatureUtils.TYP_DROIT_PROFIL_GEST_CANDIDAT));
        liste.addAll(droitProfilIndRepository.findByDroitProfilTypProfil(NomenclatureUtils.TYP_DROIT_PROFIL_GEST_CANDIDAT_LS));
    }
    return liste;
}
Also used : DroitProfil(fr.univlorraine.ecandidat.entities.ecandidat.DroitProfil) DroitProfilInd(fr.univlorraine.ecandidat.entities.ecandidat.DroitProfilInd) ArrayList(java.util.ArrayList) Individu(fr.univlorraine.ecandidat.entities.ecandidat.Individu)

Example 5 with Individu

use of fr.univlorraine.ecandidat.entities.ecandidat.Individu in project esup-ecandidat by EsupPortail.

the class DroitProfilController method addProfilToUserEnMasse.

/**
 * Ajoute un profil à un admin
 */
public void addProfilToUserEnMasse() {
    ScolGestCandidatMasseWindow window = new ScolGestCandidatMasseWindow();
    window.addDroitProfilMasseListener((listGestionnaire, droitProfil) -> {
        ConfirmWindow confirmWindow = new ConfirmWindow(applicationContext.getMessage("droitprofilind.gestcand.window.confirm", new Object[] { droitProfil.getLibProfil(), listGestionnaire.size() }, UI.getCurrent().getLocale()));
        confirmWindow.addBtnOuiListener(e -> {
            listGestionnaire.forEach(gest -> {
                Individu ind = gest.getDroitProfilInd().getIndividu();
                /*
					 * Recherche des droits
					 * Il faut supprimer un éventuel droit de gestionnaire de candidat
					 */
                List<DroitProfilInd> list = droitProfilIndRepository.findByIndividuLoginInd(ind.getLoginInd());
                Optional<DroitProfilInd> droitGestCandLS = list.stream().filter(a -> a.getDroitProfil().getCodProfil().equals(NomenclatureUtils.DROIT_PROFIL_GESTION_CANDIDAT_LS)).findFirst();
                Optional<DroitProfilInd> droitGestCand = list.stream().filter(b -> b.getDroitProfil().getCodProfil().equals(NomenclatureUtils.DROIT_PROFIL_GESTION_CANDIDAT)).findFirst();
                if (droitGestCandLS.isPresent() && !droitGestCandLS.get().getDroitProfil().getCodProfil().equals(droitProfil.getCodProfil())) {
                    droitProfilIndRepository.delete(droitGestCandLS.get());
                }
                if (droitGestCand.isPresent() && !droitGestCand.get().getDroitProfil().getCodProfil().equals(droitProfil.getCodProfil())) {
                    droitProfilIndRepository.delete(droitGestCand.get());
                }
                if ((!droitGestCandLS.isPresent() && droitProfil.getCodProfil().equals(NomenclatureUtils.DROIT_PROFIL_GESTION_CANDIDAT_LS)) || (!droitGestCand.isPresent() && droitProfil.getCodProfil().equals(NomenclatureUtils.DROIT_PROFIL_GESTION_CANDIDAT))) {
                    saveProfilInd(ind, droitProfil);
                }
            });
            window.close();
        });
        UI.getCurrent().addWindow(confirmWindow);
    });
    UI.getCurrent().addWindow(window);
}
Also used : DroitProfilRepository(fr.univlorraine.ecandidat.repositories.DroitProfilRepository) LocalDateTime(java.time.LocalDateTime) UI(com.vaadin.ui.UI) HashMap(java.util.HashMap) DroitProfilInd(fr.univlorraine.ecandidat.entities.ecandidat.DroitProfilInd) ArrayList(java.util.ArrayList) Value(org.springframework.beans.factory.annotation.Value) DroitFonctionnaliteRepository(fr.univlorraine.ecandidat.repositories.DroitFonctionnaliteRepository) CentreCandidature(fr.univlorraine.ecandidat.entities.ecandidat.CentreCandidature) SecurityCommission(fr.univlorraine.ecandidat.services.security.SecurityCommission) NomenclatureUtils(fr.univlorraine.ecandidat.utils.NomenclatureUtils) Notification(com.vaadin.ui.Notification) CommissionRepository(fr.univlorraine.ecandidat.repositories.CommissionRepository) ScolGestCandidatMasseWindow(fr.univlorraine.ecandidat.views.windows.ScolGestCandidatMasseWindow) PreferenceInd(fr.univlorraine.ecandidat.entities.ecandidat.PreferenceInd) MethodUtils(fr.univlorraine.ecandidat.utils.MethodUtils) SecurityCentreCandidature(fr.univlorraine.ecandidat.services.security.SecurityCentreCandidature) Resource(javax.annotation.Resource) DroitProfilIndividuWindow(fr.univlorraine.ecandidat.views.windows.DroitProfilIndividuWindow) Collectors(java.util.stream.Collectors) ApplicationContext(org.springframework.context.ApplicationContext) DroitFonctionnalite(fr.univlorraine.ecandidat.entities.ecandidat.DroitFonctionnalite) CentreCandidatureRepository(fr.univlorraine.ecandidat.repositories.CentreCandidatureRepository) Commission(fr.univlorraine.ecandidat.entities.ecandidat.Commission) List(java.util.List) Component(org.springframework.stereotype.Component) Type(com.vaadin.ui.Notification.Type) DroitProfilFonc(fr.univlorraine.ecandidat.entities.ecandidat.DroitProfilFonc) DroitProfil(fr.univlorraine.ecandidat.entities.ecandidat.DroitProfil) Optional(java.util.Optional) Candidature(fr.univlorraine.ecandidat.entities.ecandidat.Candidature) AdminDroitProfilWindow(fr.univlorraine.ecandidat.views.windows.AdminDroitProfilWindow) Authentication(org.springframework.security.core.Authentication) Individu(fr.univlorraine.ecandidat.entities.ecandidat.Individu) DroitProfilIndRepository(fr.univlorraine.ecandidat.repositories.DroitProfilIndRepository) SimpleBeanPresentation(fr.univlorraine.ecandidat.utils.bean.presentation.SimpleBeanPresentation) ConfirmWindow(fr.univlorraine.ecandidat.views.windows.ConfirmWindow) Assert(org.springframework.util.Assert) ScolGestCandidatMasseWindow(fr.univlorraine.ecandidat.views.windows.ScolGestCandidatMasseWindow) DroitProfilInd(fr.univlorraine.ecandidat.entities.ecandidat.DroitProfilInd) ConfirmWindow(fr.univlorraine.ecandidat.views.windows.ConfirmWindow) Individu(fr.univlorraine.ecandidat.entities.ecandidat.Individu)

Aggregations

Individu (fr.univlorraine.ecandidat.entities.ecandidat.Individu)15 DroitProfilInd (fr.univlorraine.ecandidat.entities.ecandidat.DroitProfilInd)8 DroitProfil (fr.univlorraine.ecandidat.entities.ecandidat.DroitProfil)6 PreferenceInd (fr.univlorraine.ecandidat.entities.ecandidat.PreferenceInd)4 ArrayList (java.util.ArrayList)4 Commission (fr.univlorraine.ecandidat.entities.ecandidat.Commission)3 CustomException (fr.univlorraine.ecandidat.utils.CustomException)3 Notification (com.vaadin.ui.Notification)2 Type (com.vaadin.ui.Notification.Type)2 UI (com.vaadin.ui.UI)2 CentreCandidature (fr.univlorraine.ecandidat.entities.ecandidat.CentreCandidature)2 CommissionMembre (fr.univlorraine.ecandidat.entities.ecandidat.CommissionMembre)2 DroitProfilFonc (fr.univlorraine.ecandidat.entities.ecandidat.DroitProfilFonc)2 Gestionnaire (fr.univlorraine.ecandidat.entities.ecandidat.Gestionnaire)2 PeopleLdap (fr.univlorraine.ecandidat.services.ldap.PeopleLdap)2 SecurityCentreCandidature (fr.univlorraine.ecandidat.services.security.SecurityCentreCandidature)2 SecurityCommission (fr.univlorraine.ecandidat.services.security.SecurityCommission)2 MethodUtils (fr.univlorraine.ecandidat.utils.MethodUtils)2 NomenclatureUtils (fr.univlorraine.ecandidat.utils.NomenclatureUtils)2 List (java.util.List)2