1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
|
@ManagedBean
@RequestScoped
public class ConnexionForm {
private static final String COOKIE_USERNAME = "loginUsername";
private static final String COOKIE_REMEMBER_ME = "loginRememberMe";
public static final String PARAM_URL_ORIGINALE = "urlOriginale";
private String login;
private String password;
private boolean remembered;
@EJB
private EmployeDao m_employeService;
/**
* Default Constructor
*/
public ConnexionForm() {
}
@PostConstruct
public void init() {
Cookie cookieUsername = CookieHelper.getCookie(COOKIE_USERNAME);
if (cookieUsername != null && cookieUsername.getMaxAge() > 0) {
login = cookieUsername.getValue();
}
Cookie cookieRememberMe = CookieHelper.getCookie(COOKIE_REMEMBER_ME);
if (cookieRememberMe != null && cookieRememberMe.getMaxAge() > 0) {
try {
remembered = Boolean.valueOf(cookieRememberMe.getValue());
} catch (Exception e) {
// On ignore l'erreur s'il n'est pas possible de retrouver un boolean
}
}
}
public void authenticate() throws IOException {
FacesContext context = FacesContext.getCurrentInstance();
ExternalContext externalContext = context.getExternalContext();
// Récupère l'éventuelle session active ...
HttpSession session = ((HttpServletRequest) externalContext
.getRequest()).getSession();
// ... et l'éventuel employé connecté
Employe loginBean = (Employe) session.getAttribute("user");
try {
// Si aucun employé n'est déjà authentifié, recherche en base de données
if (loginBean == null) {
loginBean = m_employeService.getEmploye(this.login, this.password);
}
// Si un employé est authentifié, met à jour le cookie de connexion
// et redirige l'utilisateur sur la page demandée ou la page d'accueil
if (loginBean != null) {
session.setAttribute("user", loginBean);
if (isRemembered()) {
CookieHelper.setCookie(COOKIE_USERNAME, login, 60 * 60 * 24 * 365); // 1 année
CookieHelper.setCookie(COOKIE_REMEMBER_ME,
Boolean.TRUE.toString(), 60 * 60 * 24 * 365); // 1 année
} else {
CookieHelper.setCookie(COOKIE_USERNAME, "", 0);
CookieHelper.setCookie(COOKIE_REMEMBER_ME,
Boolean.FALSE.toString(), 0);
}
String urlOriginale = (String) session.getAttribute(PARAM_URL_ORIGINALE);
if (Strings.isNullOrEmpty(urlOriginale)) {
urlOriginale = IUrlLocation.URL_ACCUEIL;
}
urlOriginale = externalContext.getRequestContextPath() + urlOriginale;
externalContext.redirect(urlOriginale);
}
throw new Exception(getMessage(FacesMessage.SEVERITY_ERROR).getSummary());
} catch (Exception e) {
context.addMessage(null, new FacesMessage(e.getMessage()));
}
}
public void forgetLoginData() {
FacesContext context = FacesContext.getCurrentInstance();
ExternalContext externalContext = context.getExternalContext();
try {
externalContext.redirect(externalContext.getRequestContextPath()
+ IUrlLocation.URL_OUBLI_LOGIN);
} catch (IOException e) {
context.addMessage(null, getMessage(FacesMessage.SEVERITY_ERROR));
}
}
private FacesMessage getMessage(Severity severity) {
return Messages.getMessage("NomUtilisateurOuMotDePasseInconnu", severity, null);
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public boolean isRemembered() {
return remembered;
}
public void setRemembered(boolean remembered) {
this.remembered = remembered;
}
} |
Partager