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);
}
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;
}
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);
}
}
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());
}
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);
}
Aggregations