use of fr.univlorraine.ecandidat.services.security.SecurityUser in project esup-ecandidat by EsupPortail.
the class UserController method connectCandidatInterne.
/**
* Connexion d'un candidat
* @param username
* login
* @param password
* mot de passe
*/
public void connectCandidatInterne(final String username, final String password) {
if (loadBalancingController.isLoadBalancingGestionnaireMode()) {
return;
}
final CompteMinima cptMin = candidatController.searchCptMinByNumDossier(username);
if (cptMin != null) {
if (!validPwdCandidat(password, cptMin)) {
return;
}
if (!cptMin.getTemValidCptMin() || !cptMin.getTemValidMailCptMin()) {
Notification.show(applicationContext.getMessage("compteMinima.connect.valid.error", null, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE);
return;
}
} else {
Notification.show(applicationContext.getMessage("compteMinima.connect.user.error", null, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE);
return;
}
final SecurityUser user = constructSecurityUserCandidat(username, cptMin);
if (user == null) {
return;
}
// authentication
final UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken(user, username, user.getAuthorities());
final Authentication authentication = authenticationManagerCandidat.authenticate(authRequest);
/* Se désinscrit de la réception de notifications */
uiController.unregisterUiCandidat(MainUI.getCurrent());
final SecurityContext context = SecurityContextHolder.createEmptyContext();
context.setAuthentication(authentication);
SecurityContextHolder.setContext(context);
UI.getCurrent().getSession().getSession().setAttribute(HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY, context);
final MainUI current = (MainUI) UI.getCurrent();
uiController.registerUiCandidat(current);
i18nController.initLanguageUI(true);
current.navigateToAccueilView();
}
use of fr.univlorraine.ecandidat.services.security.SecurityUser 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.SecurityUser in project esup-ecandidat by EsupPortail.
the class UserController method constructSecurityUserCandidat.
/**
* Créer un user Candidat
* @param cptMin
* le compte a minima cree
* @param username
* le username
* @return le user connecte
*/
private SecurityUser constructSecurityUserCandidat(final String username, final CompteMinima cptMin) {
Integer idCptMin = null;
String noDossierOPI = null;
Boolean cptMinValid = false;
Boolean mailValid = false;
if (cptMin != null && campagneController.isCampagneActiveCandidat(cptMin.getCampagne())) {
idCptMin = cptMin.getIdCptMin();
noDossierOPI = cptMin.getNumDossierOpiCptMin();
cptMinValid = cptMin.getTemValidCptMin();
mailValid = cptMin.getTemValidMailCptMin();
final List<GrantedAuthority> authoritiesListe = new ArrayList<>();
final SimpleGrantedAuthority sga = new SimpleGrantedAuthority(ConstanteUtils.ROLE_CANDIDAT);
authoritiesListe.add(sga);
final Candidat candidat = cptMin.getCandidat();
String codLangue = null;
if (candidat != null) {
codLangue = candidat.getLangue().getCodLangue();
}
return new SecurityUserCandidat(username, getDisplayNameCandidat(cptMin), authoritiesListe, idCptMin, noDossierOPI, cptMinValid, mailValid, codLangue);
} else {
return new SecurityUser(username, username, new ArrayList<GrantedAuthority>());
}
}
use of fr.univlorraine.ecandidat.services.security.SecurityUser in project esup-ecandidat by EsupPortail.
the class UserController method alimenteSecurityUserCptMin.
/**
* Alimente la session pour un compte local
* @param cptMin
* le compte a minima a connecter
*/
public void alimenteSecurityUserCptMin(final CompteMinima cptMin) {
final SecurityUser user = (SecurityUser) getCurrentUser();
if (user != null) {
final List<GrantedAuthority> authoritiesListe = new ArrayList<>();
final SimpleGrantedAuthority sga = new SimpleGrantedAuthority(ConstanteUtils.ROLE_CANDIDAT);
authoritiesListe.add(sga);
final SecurityUserCandidat securityUserCandidat = new SecurityUserCandidat(user.getUsername(), user.getDisplayName(), authoritiesListe, cptMin.getIdCptMin(), cptMin.getNumDossierOpiCptMin(), cptMin.getTemValidCptMin(), cptMin.getTemValidMailCptMin(), null);
final UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken(securityUserCandidat, securityUserCandidat.getUsername(), securityUserCandidat.getAuthorities());
final Authentication authentication = authenticationManagerCandidat.authenticate(authRequest);
final SecurityContext context = SecurityContextHolder.createEmptyContext();
context.setAuthentication(authentication);
SecurityContextHolder.setContext(context);
UI.getCurrent().getSession().getSession().setAttribute(HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY, context);
}
}
Aggregations