Search in sources :

Example 1 with SecurityCommission

use of fr.univlorraine.ecandidat.services.security.SecurityCommission in project esup-ecandidat by EsupPortail.

the class UserController method getCommissionFonctionnalite.

/**
 * Renvoie la fonctionnalité et le centre de candidature en cours
 * @param  codFonc
 *                     le code de la fonctionnalite
 * @return         l'element de session de fonctionnalite
 */
public SecurityCommissionFonc getCommissionFonctionnalite(final String codFonc, final Authentication auth) {
    final SecurityCommission scc = getCommission(auth);
    if (scc != null) {
        final Commission commission = commissionController.getCommissionById(scc.getIdComm());
        /* Verification de la concordance entre le centre de candidature en cours et le
			 * menu chargé dans l'UI Utile lorsqu'un user a changé de centre dans un autre
			 * onglet */
        MainUI.getCurrent().checkConcordanceCommission(commission);
        if (commission != null) {
            final SecurityCommissionFonc sf = new SecurityCommissionFonc(commission, null);
            if (isScolCentrale(auth)) {
                sf.setDroit(Droit.WRITE);
                return sf;
            } else if (scc.getListFonctionnalite() != null && scc.getListFonctionnalite().size() != 0) {
                final Optional<DroitProfilFonc> fonc = scc.getListFonctionnalite().stream().filter(e -> e.getId().getCodFonc().equals(codFonc)).findFirst();
                if (fonc.isPresent()) {
                    if (fonc.get().getTemReadOnly()) {
                        sf.setDroit(Droit.READ_ONLY);
                    } else {
                        sf.setDroit(Droit.WRITE);
                    }
                    return sf;
                }
            }
        }
    } else {
        MainUI.getCurrent().checkConcordanceCommission(null);
    }
    return new SecurityCommissionFonc(Droit.NO_RIGHT);
}
Also used : Optional(java.util.Optional) SecurityCommission(fr.univlorraine.ecandidat.services.security.SecurityCommission) SecurityCommission(fr.univlorraine.ecandidat.services.security.SecurityCommission) Commission(fr.univlorraine.ecandidat.entities.ecandidat.Commission) SecurityCommissionFonc(fr.univlorraine.ecandidat.services.security.SecurityCommissionFonc)

Example 2 with SecurityCommission

use of fr.univlorraine.ecandidat.services.security.SecurityCommission 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 3 with SecurityCommission

use of fr.univlorraine.ecandidat.services.security.SecurityCommission in project esup-ecandidat by EsupPortail.

the class CommissionController method controlDisableOrDeleteCommissionEnCours.

/**
 * on controle qu'on ne desactive pas ou qu'on ne supprime pas le centre de candidature en cours
 * @param centreCandidature
 */
private void controlDisableOrDeleteCommissionEnCours(final Commission commission, final Boolean isDelete) {
    final SecurityCommission securityCommission = userController.getCommission();
    /* Si passage du temoin en service à non et que ce centre est celui en train
		 * d'être éditée */
    if ((!commission.getTesComm() || isDelete) && securityCommission != null && securityCommission.getIdComm().equals(commission.getIdComm())) {
        userController.setCommission(null);
        MainUI.getCurrent().buildMenuCommission();
        Notification.show(applicationContext.getMessage("commission.delete.or.disable.active", null, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE);
    }
}
Also used : SecurityCommission(fr.univlorraine.ecandidat.services.security.SecurityCommission)

Example 4 with SecurityCommission

use of fr.univlorraine.ecandidat.services.security.SecurityCommission in project esup-ecandidat by EsupPortail.

the class DroitProfilController method getCandidatureFonctionnalite.

/**
 * @param typGestionCandidature
 * @param candidature
 * @return les fonctionnalites dont l'utilisateur a le droit pour une candidature
 */
public List<DroitFonctionnalite> getCandidatureFonctionnalite(final String typGestionCandidature, final Candidature candidature) {
    Authentication auth = userController.getCurrentAuthentication();
    /* Ce sera la liste d'action a renvoyer */
    List<DroitFonctionnalite> listeFoncToRet = new ArrayList<>();
    if ((userController.isGestionnaireCandidat(auth) || userController.isGestionnaireCandidatLS(auth))) {
        listeFoncToRet.add(new DroitFonctionnalite(NomenclatureUtils.FONCTIONNALITE_OPEN_CANDIDAT, applicationContext.getMessage("candidature.action.open", null, UI.getCurrent().getLocale()), 0, true));
    }
    /* Utilisateur ScolCentrale, on ajoute toutes les fonctionnalités */
    if (userController.isScolCentrale(auth)) {
        List<DroitFonctionnalite> listeFonc = cacheController.getListeDroitFonctionnaliteCandidature();
        /* On place tout les éléments en ecriture */
        listeFonc.forEach(e -> listeFoncToRet.add(new DroitFonctionnalite(e, false)));
    } else {
        List<DroitProfilFonc> listFonctionnalite = new ArrayList<>();
        /* On provient du menu centre de candidature-->on a accès au droits du profil du centre de candidature */
        if (MethodUtils.isGestionCandidatureCtrCand(typGestionCandidature)) {
            SecurityCentreCandidature scc = userController.getCentreCandidature(auth);
            if (scc != null) {
                listFonctionnalite = scc.getListFonctionnalite();
            }
        } else /* On provient du menu commission-->on a accès au droits du profil de la commission */
        if (MethodUtils.isGestionCandidatureCommission(typGestionCandidature)) {
            SecurityCommission sc = userController.getCommission(auth);
            if (sc != null) {
                listFonctionnalite = sc.getListFonctionnalite();
            }
        } else /* On provient du menu candidat-->on a accès au droits du profil de la commission et du centre de candidature */
        if (MethodUtils.isGestionCandidatureCandidat(typGestionCandidature)) {
            SecurityCentreCandidature scc = userController.getCentreCandidature(auth);
            if (scc != null && candidature != null && (scc.getIsGestAllCommission() || MethodUtils.isIdInListId(candidature.getFormation().getCommission().getIdComm(), scc.getListeIdCommission()))) {
                listFonctionnalite.addAll(scc.getListFonctionnalite());
            }
            SecurityCommission sc = userController.getCommission(auth);
            if (sc != null && candidature != null && sc.getIdComm().equals(candidature.getFormation().getCommission().getIdComm())) {
                listFonctionnalite.addAll(sc.getListFonctionnalite());
            }
            /* Il faut eviter les doublons et prendre les fonctionnalités en ecriture prioritairement-->on trie sur le temoin pour passer les readonly en dernier */
            listFonctionnalite.sort((d1, d2) -> d1.getTemReadOnly().compareTo(d2.getTemReadOnly()));
        }
        /* On traite la liste-->dédoublon + gestion du read only */
        listFonctionnalite.stream().filter(e -> e.getDroitFonctionnalite().getTemActionCandFonc() && (!e.getTemReadOnly() || (e.getTemReadOnly() && e.getDroitFonctionnalite().getCodFonc().equals(NomenclatureUtils.FONCTIONNALITE_GEST_POST_IT)) || (e.getTemReadOnly() && e.getDroitFonctionnalite().getCodFonc().equals(NomenclatureUtils.FONCTIONNALITE_VISU_HISTO_AVIS)))).forEach(f -> {
            listeFoncToRet.add(new DroitFonctionnalite(f.getDroitFonctionnalite(), f.getTemReadOnly()));
        });
    }
    /* On trie et on envoie */
    listeFoncToRet.sort((d1, d2) -> d1.getOrderFonc().compareTo(d2.getOrderFonc()));
    return listeFoncToRet.stream().distinct().collect(Collectors.toList());
}
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) DroitProfilFonc(fr.univlorraine.ecandidat.entities.ecandidat.DroitProfilFonc) Authentication(org.springframework.security.core.Authentication) SecurityCentreCandidature(fr.univlorraine.ecandidat.services.security.SecurityCentreCandidature) SecurityCommission(fr.univlorraine.ecandidat.services.security.SecurityCommission) ArrayList(java.util.ArrayList) DroitFonctionnalite(fr.univlorraine.ecandidat.entities.ecandidat.DroitFonctionnalite)

Example 5 with SecurityCommission

use of fr.univlorraine.ecandidat.services.security.SecurityCommission in project esup-ecandidat by EsupPortail.

the class CandidatCandidaturesView method init.

/**/
/**
 * Initialise la vue
 */
@Override
@PostConstruct
public void init() {
    super.init();
    setNavigationButton(CandidatFormationProView.NAME, null);
    String[] fieldsOrderToUse = FIELDS_ORDER_CANDIDAT;
    btnNewCandidature = new OneClickButton(applicationContext.getMessage("candidature.btn.new", null, UI.getCurrent().getLocale()), FontAwesome.PLUS);
    btnNewCandidature.setEnabled(true);
    btnNewCandidature.addClickListener(e -> {
        candidatureController.editNewCandidature();
    });
    addGenericButton(btnNewCandidature, Alignment.MIDDLE_LEFT);
    /* L'authentification */
    Authentication auth = userController.getCurrentAuthentication();
    /* Gestionnaire? */
    Boolean isGestionnaire = userController.isGestionnaireCandidat(auth);
    /* On a besoin de savoir si un gestionnaire est sur cet ecran et si il a les droits pour ouvrir la candidature du candidat */
    SecurityCentreCandidature scc = userController.getCentreCandidature(auth);
    SecurityCommission sc = userController.getCommission(auth);
    /* Table candidatures */
    if (isGestionnaire) {
        fieldsOrderToUse = FIELDS_ORDER_GEST;
        btnNewCandidature.setCaption(applicationContext.getMessage("candidature.btn.proposition", null, UI.getCurrent().getLocale()));
        candidatureContainer.addNestedContainerProperty(Candidature_.formation.getName() + "." + Formation_.commission.getName() + "." + Commission_.centreCandidature.getName() + "." + CentreCandidature_.libCtrCand.getName());
        candidatureContainer.addNestedContainerProperty(Candidature_.typeTraitement.getName() + "." + TypeTraitement_.libTypTrait.getName());
        candidatureTable.addBooleanColumn(Candidature_.temValidTypTraitCand.getName());
    }
    candidatureContainer.addNestedContainerProperty(Candidature_.formation.getName() + "." + Formation_.libForm.getName());
    candidatureContainer.addNestedContainerProperty(Candidature_.formation.getName() + "." + Formation_.datRetourForm.getName());
    candidatureTable.addGeneratedColumn(Candidature_.formation.getName() + "." + Formation_.datRetourForm.getName(), new ColumnGenerator() {

        @Override
        public Object generateCell(final Table source, final Object itemId, final Object columnId) {
            LocalDate dateRetourCandidat = candidatureController.getDateRetourCandidat((Candidature) itemId);
            return dateRetourCandidat != null ? formatterDate.format(dateRetourCandidat) : "";
        }
    });
    candidatureTable.addGeneratedColumn(ConstanteUtils.CANDIDATURE_LIB_STATUT, new ColumnGenerator() {

        @Override
        public Object generateCell(final Table source, final Object itemId, final Object columnId) {
            final Candidature candidature = (Candidature) itemId;
            return new Label(i18nController.getI18nTraduction(candidature.getTypeStatut().getI18nLibTypStatut()));
        }
    });
    candidatureTable.addGeneratedColumn(ConstanteUtils.CANDIDATURE_LIB_LAST_DECISION, new ColumnGenerator() {

        @Override
        public Object generateCell(final Table source, final Object itemId, final Object columnId) {
            final Candidature candidature = (Candidature) itemId;
            return candidatureController.getLibLastTypeDecisionCandidature(candidature.getLastTypeDecision(), !isGestionnaire);
        }
    });
    candidatureTable.setSizeFull();
    candidatureTable.setVisibleColumns((Object[]) fieldsOrderToUse);
    for (String fieldName : fieldsOrderToUse) {
        candidatureTable.setColumnHeader(fieldName, applicationContext.getMessage("candidature." + fieldName, null, UI.getCurrent().getLocale()));
    }
    candidatureTable.setSortContainerPropertyId(Candidature_.idCand.getName());
    candidatureTable.setColumnCollapsingAllowed(true);
    candidatureTable.setColumnReorderingAllowed(true);
    candidatureTable.setSelectable(true);
    candidatureTable.setImmediate(true);
    candidatureTable.addItemSetChangeListener(e -> candidatureTable.sanitizeSelection());
    OneClickButton btnOpenCandidature = new OneClickButton(applicationContext.getMessage("btnOpen", null, UI.getCurrent().getLocale()), FontAwesome.PENCIL);
    btnOpenCandidature.setEnabled(false);
    btnOpenCandidature.addClickListener(e -> {
        if (candidatureTable.getValue() instanceof Candidature) {
            Candidature candidature = (Candidature) candidatureTable.getValue();
            candidatureController.openCandidatureCandidat(candidature, isArchive, this);
        }
    });
    addGenericButton(btnOpenCandidature, Alignment.MIDDLE_RIGHT);
    candidatureTable.addValueChangeListener(e -> {
        if (!(candidatureTable.getValue() instanceof Candidature)) {
            /* Les boutons d'édition et de suppression de Candidature sont actifs seulement si une Candidature est sélectionnée. */
            btnOpenCandidature.setEnabled(false);
            return;
        }
        if (userController.isScolCentrale(auth)) {
            btnOpenCandidature.setEnabled(true);
            return;
        }
        /* Verification que l'utilisateur a le droit d'ouvrir la candidature */
        Candidature candidature = (Candidature) candidatureTable.getValue();
        if (userController.isCandidat(auth) && candidatureController.isCandidatOfCandidature(candidature)) {
            btnOpenCandidature.setEnabled(true);
            return;
        }
        if (candidatureController.hasRightToOpenCandidature(candidature, scc, sc)) {
            btnOpenCandidature.setEnabled(true);
        } else {
            btnOpenCandidature.setEnabled(false);
        }
    });
    candidatureTable.addItemClickListener(e -> {
        if (e.isDoubleClick()) {
            candidatureTable.select(e.getItemId());
            btnOpenCandidature.click();
        }
    });
    addGenericComponent(candidatureTable);
    setGenericExpandRatio(candidatureTable);
}
Also used : Table(com.vaadin.ui.Table) OneClickButton(fr.univlorraine.ecandidat.vaadin.components.OneClickButton) Label(com.vaadin.ui.Label) SecurityCentreCandidature(fr.univlorraine.ecandidat.services.security.SecurityCentreCandidature) Candidature(fr.univlorraine.ecandidat.entities.ecandidat.Candidature) LocalDate(java.time.LocalDate) ColumnGenerator(com.vaadin.ui.Table.ColumnGenerator) Authentication(org.springframework.security.core.Authentication) SecurityCentreCandidature(fr.univlorraine.ecandidat.services.security.SecurityCentreCandidature) SecurityCommission(fr.univlorraine.ecandidat.services.security.SecurityCommission) PostConstruct(javax.annotation.PostConstruct)

Aggregations

SecurityCommission (fr.univlorraine.ecandidat.services.security.SecurityCommission)8 SecurityCentreCandidature (fr.univlorraine.ecandidat.services.security.SecurityCentreCandidature)5 Authentication (org.springframework.security.core.Authentication)5 Candidature (fr.univlorraine.ecandidat.entities.ecandidat.Candidature)4 CentreCandidature (fr.univlorraine.ecandidat.entities.ecandidat.CentreCandidature)4 Commission (fr.univlorraine.ecandidat.entities.ecandidat.Commission)3 DroitProfilFonc (fr.univlorraine.ecandidat.entities.ecandidat.DroitProfilFonc)3 ArrayList (java.util.ArrayList)3 Optional (java.util.Optional)3 Notification (com.vaadin.ui.Notification)2 Type (com.vaadin.ui.Notification.Type)2 UI (com.vaadin.ui.UI)2 DroitFonctionnalite (fr.univlorraine.ecandidat.entities.ecandidat.DroitFonctionnalite)2 DroitProfilInd (fr.univlorraine.ecandidat.entities.ecandidat.DroitProfilInd)2 Individu (fr.univlorraine.ecandidat.entities.ecandidat.Individu)2 PreferenceInd (fr.univlorraine.ecandidat.entities.ecandidat.PreferenceInd)2 TypeDecisionCandidature (fr.univlorraine.ecandidat.entities.ecandidat.TypeDecisionCandidature)2 SecurityCommissionFonc (fr.univlorraine.ecandidat.services.security.SecurityCommissionFonc)2 MethodUtils (fr.univlorraine.ecandidat.utils.MethodUtils)2 NomenclatureUtils (fr.univlorraine.ecandidat.utils.NomenclatureUtils)2