Poniżej odpowiednio klasa LoginBean (logowanie, walidacja i wywołanie stromy account.xhtml):
@ManagedBean
@RequestScoped
public class LoginBean implements Serializable, Authorization, UserSessionManager {
private static final String rejectAuthMssg = "student not authorized";
Logger logger = Logger.getLogger(LoginBean.class.toString());
public UserSessionBean getUserSessionBean() {
return userSessionBean;
}
public void setUserSessionBean(UserSessionBean userSessionBean) {
this.userSessionBean = userSessionBean;
}
@ManagedProperty("#{userSessionBean}")
private org.primefaces.showcase.view.access.UserSessionBean userSessionBean;
public StudentService getStudentService() {
return studentService;
}
public void setStudentService(StudentService studentService) {
this.studentService = studentService;
}
@ManagedProperty(value = "#{studentDatabaseBean}")
private StudentService studentService;
public PasswordEncryptorBeforeDataBaseInput getPasswordEncryptorBeforeDataBaseInput() {
return passwordEncryptorBeforeDataBaseInput;
}
public void setPasswordEncryptorBeforeDataBaseInput(PasswordEncryptorBeforeDataBaseInput passwordEncryptorBeforeDataBaseInput) {
this.passwordEncryptorBeforeDataBaseInput = passwordEncryptorBeforeDataBaseInput;
}
@ManagedProperty(value = "#{passwordEncryptorBeforeDataBaseInput}")
PasswordEncryptorBeforeDataBaseInput passwordEncryptorBeforeDataBaseInput;
@EJB
StudentDao studentDao;
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 long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
private String password;
private String login;
private long id;
public String login() {
logger.info(String.format("Login inicjacja, login=%s password: ******", login));
EntityManager em = studentService.getInstanceOfEntityManager();
Student student = (new DataBaseSelectorFactory()).findSensitiveData(getLogin(), em, "login");
try {
String psswdFromForm = getPassword();
logger.log(Level.INFO, "Czy pobrano studenta z bazy ? " + student.getLogin() + " : " + student.getPassword() + " : " + student.getId());
String passwEncrypted = (new PasswordEncryptorBeforeDataBaseInput()).encryptePassword(psswdFromForm);
if (student == null) {
userSessionBean.showError("Błąd logowania", "Podany użytkownik nie istnieje.");
return (null);
}
if (!(new LoginBean()).authorize(login, passwEncrypted, student)) {
userSessionBean.showError("Błąd logowania", "Podano niepoprawne hasło lub login.");
return (null);
}
logger.info("login,password,student validated ; sesssion put and stored correctly in HashMap.");
} catch (Exception e) {
userSessionBean.showError("Błąd logowania", "Please contact administrator.");
logger.log(Level.SEVERE, "LoginBean.login - DaoException (student not found)", e);
return (null);
}
logger.log(Level.SEVERE, "student ma pole imię :" + student.getFirstName());
logger.log(Level.SEVERE, "student ma pole id :" + String.valueOf(student.getId()));
logger.log(Level.SEVERE, "student ma pole login :" + student.getLogin());
// to wołam stronę account.xhtml
** return (new PersonalAccountBuilder()).buildAccount(student);**
}
public void setFieldsLoggingToZero() {
setLogin("");
setPassword("");
}
@Override
public boolean authorize(String login, String passwEncrypted, Student student) {
logger.log(Level.INFO, "Argumenty w metodzie authorize : login : " + login + " : pswfromForm : " + passwEncrypted + " : hasło z bazy danych : " + student.getPassword());
if (student.getLogin().equals(login) && student.getPassword().equals(passwEncrypted)) {
return true;
} else {
logger.info(rejectAuthMssg);
return false;
}
}
}
Klasa PersonalAccountBuilder (budowa pól dla account.xhtml i zwrot Stringu do LoginBean) :
(W opisie słownym bez kodu - używałem nazwy BuilderAccount - myślałem , że może w ogóle nie
będzie potrzebna)
@ManagedBean
@SessionScoped
public class PersonalAccountBuilder implements Serializable {
public String getFirstName_account() {
return firstName_account;
}
public void setFirstName_account(String firstName_account) {
this.firstName_account = firstName_account;
}
public String getLastName_account() {
return lastName_account;
}
public void setLastName_account(String lastName_account) {
this.lastName_account = lastName_account;
}
public String getDowosob_account() {
return dowosob_account;
}
public void setDowosob_account(String dowosob_account) {
this.dowosob_account = dowosob_account;
}
public String getPesel_account() {
return pesel_account;
}
public void setPesel_account(String pesel_account) {
this.pesel_account = pesel_account;
}
public String getIban_account() {
return iban_account;
}
public void setIban_account(String iban_account) {
this.iban_account = iban_account;
}
public String getGender_account() {
return gender_account;
}
public void setGender_account(String gender_account) {
this.gender_account = gender_account;
}
public String getPostalCode_account() {
return postalCode_account;
}
public void setPostalCode_account(String postalCode_account) {
this.postalCode_account = postalCode_account;
}
public String getStreet_account() {
return street_account;
}
public void setStreet_account(String street_account) {
this.street_account = street_account;
}
public String getHouseNumber_account() {
return houseNumber_account;
}
public void setHouseNumber_account(String houseNumber_account) {
this.houseNumber_account = houseNumber_account;
}
public String getApartmentNumber_account() {
return apartmentNumber_account;
}
public void setApartmentNumber_account(String apartmentNumber_account) {
this.apartmentNumber_account = apartmentNumber_account;
}
public String getCity_account() {
return city_account;
}
public void setCity_account(String city_account) {
this.city_account = city_account;
}
public String getVoivodeship_account() {
return voivodeship_account;
}
public void setVoivodeship_account(String voivodeship_account) {
this.voivodeship_account = voivodeship_account;
}
public String getCounty_account() {
return county_account;
}
public void setCounty_account(String county_account) {
this.county_account = county_account;
}
public String getLogin_account() {
return login_account;
}
public void setLogin_account(String login_account) {
this.login_account = login_account;
}
public String getPassword_account() {
return password_account;
}
public void setPassword_account(String password_account) {
this.password_account = password_account;
}
public String getEmail_account() {
return email_account;
}
public void setEmail_account(String email_account) {
this.email_account = email_account;
}
public String getPrefix_account() {
return prefix_account;
}
public void setPrefix_account(String prefix_account) {
this.prefix_account = prefix_account;
}
public String getPhone_account() {
return phone_account;
}
public void setPhone_account(String phone_account) {
this.phone_account = phone_account;
}
private long id;
private String firstName_account;
private String lastName_account;
private String dowosob_account;
private String pesel_account;
private String iban_account;
private String gender_account;
private String postalCode_account;
private String street_account;
private String houseNumber_account;
private String apartmentNumber_account;
private String city_account;
private String voivodeship_account;
private String county_account;
private String login_account;
private String password_account;
private String email_account;
private String prefix_account;
private String phone_account;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String startPersonalPage = "account";
Logger logger = Logger.getLogger(PersonalAccountBuilder.class.toString());
public String buildAccount(Student student) {
logger.log(Level.SEVERE, "Student przekazany do PersonalAccountBuilder :" + student);
setId(student.getId());
setFirstName_account(student.getFirstName());
setLastName_account(student.getLastName());
setDowosob_account(student.getDowosob());
setPesel_account(student.getPesel());
setIban_account(student.getIban());
setGender_account(student.getGender());
setPostalCode_account(student.getPostalCode());
setStreet_account(student.getStreet());
setHouseNumber_account(student.getHouseNumber());
setApartmentNumber_account(student.getApartmentNumber());
setCity_account(student.getCity());
setVoivodeship_account(student.getVoivodeship());
setCounty_account(student.getCounty());
setLogin_account(student.getLogin());
setPassword_account(student.getPassword());
setEmail_account(student.getEmail());
setPrefix_account(student.getPrefix());
setPhone_account(student.getPhone());
logger.log(Level.SEVERE, "PersonalAccountBuilder ma pole imię :" + getFirstName_account());
logger.log(Level.SEVERE, "PersonalAccountBuilder ma pole email :" + getEmail_account());
logger.log(Level.SEVERE, "PersonalAccountBuilder ma pole id_account :" + String.valueOf(getId()));
return startPersonalPage + "?faces-redirect=true" + "&includeViewParams=true";
}
}
Logi nie wykazują żadnych błędów , w loggerach są odpowiednie wartości pół obiektów : personalAccountBuilder oraz student.
?