package info.ozkan.vipera.views.login; import java.io.Serializable; import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; import javax.faces.event.ActionEvent; import javax.inject.Inject; import javax.inject.Named; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Scope; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.security.core.AuthenticationException; import org.springframework.security.core.context.SecurityContextHolder; /** * Hasta giriş ekranı * * @author Ömer Özkan * */ @Named("patientLogin") @Scope("session") public class PatientLoginBean implements Serializable { /** * Serial */ private static final long serialVersionUID = 4238662025570027643L; /** * LOGGER */ private static final Logger LOGGER = LoggerFactory .getLogger(PatientLoginBean.class); /** * Giriş başarısız mesajı */ private static final String LOGIN_FAILED_MSG = "Girdiğiniz TCKN veya parola yanlış. Lütfen girdiğiniz bilgileri kontrol ediniz"; /** * giriş başarısız mesaj başlığı */ private static final String LOGIN_FAILED = "Giriş başarısız!"; /** * giriş sayfası */ private static final String INDEX_PAGE = "/hasta/index.html?faces-redirect=true"; /** * TCKN */ private Long tckn; /** * Parola */ private String password; /** * Giriş başarılı mı */ private boolean isSuccess; /** * yetkilendirme nesnesi */ @Inject private AuthenticationManager patientAuthManager; /** * giriş başarılı ise anasayfaya yönlendirir * * @return */ public String login() { return isSuccess ? INDEX_PAGE : null; } /** * Login işlemini gerçekleştirir * * @param ae */ public void login(final ActionEvent ae) { final FacesContext context = FacesContext.getCurrentInstance(); isSuccess = false; try { final Authentication request = new UsernamePasswordAuthenticationToken(tckn, password); final Authentication result = patientAuthManager.authenticate(request); SecurityContextHolder.getContext().setAuthentication(result); isSuccess = true; LOGGER.info("{} has login to patient panel", tckn); } catch (final AuthenticationException e) { context.addMessage(null, new FacesMessage(LOGIN_FAILED, LOGIN_FAILED_MSG)); LOGGER.info("The user has failed to login patient panel!"); } } /** * @return the tckn */ public Long getTckn() { return tckn; } /** * @param tckn * the tckn to set */ public void setTckn(final Long tckn) { this.tckn = tckn; } /** * @return the password */ public String getPassword() { return password; } /** * @param password * the password to set */ public void setPassword(final String password) { this.password = password; } }