package com.kritsit.casetracker.client.domain.ui.controller; import com.kritsit.casetracker.client.domain.services.ILoginService; import com.kritsit.casetracker.shared.domain.model.Staff; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.scene.control.Alert; import javafx.scene.control.Alert.AlertType; import javafx.scene.control.PasswordField; import javafx.scene.control.TextField; import javafx.stage.Stage; public class LoginController implements IController { private final Logger logger = LoggerFactory.getLogger(LoginController.class); @FXML private TextField txtUsername; @FXML private PasswordField pwdPassword; private ILoginService loginService; private Stage stage; private Staff user = null; public void setLoginService(ILoginService loginService) { this.loginService = loginService; } public void setStage(Stage stage) { this.stage = stage; } public Staff getUser() { return user; } @FXML protected void handleLoginButtonAction(ActionEvent e) { String username = txtUsername.getText(); String password = pwdPassword.getText(); login(username, password); } @FXML protected void handleCancelButtonAction(ActionEvent e) { logger.info("Close - user cancelled log in"); stage.close(); } private void login(String username, String password) { logger.info("Atempting to log in in user {}", username); if (loginService == null) { Alert failedLogin = new Alert(AlertType.ERROR); failedLogin.setTitle("Error"); failedLogin.setHeaderText(null); failedLogin.setContentText("An error occured. The application will now close"); failedLogin.showAndWait(); logger.error("Unable to login - LoginService not defined"); throw new RuntimeException("LoginService not defined"); } if (loginService.login(username, password)) { logger.debug("User {} logged in", username); user = loginService.getUser(username, password); stage.hide(); } else { Alert failedLogin = new Alert(AlertType.WARNING); failedLogin.setTitle("Incorrect Login"); failedLogin.setHeaderText(null); failedLogin.setContentText("Username and/or password incorrect. Unable to log into the server"); failedLogin.showAndWait(); } } }