private boolean testarLogin(String userName, String password) {
        User user = showLoginPanel(userName, password);

        if (user != null) {
            try {
                user = admin.login(Integer.parseInt(user.getNome()), user.getPassword());
                JOptionPane.showMessageDialog(this, "Bem-vindo, aprovador " + user.getNome() + ".");
                return true;
            } catch (NumberFormatException | UserNotValidException ex) {
                JOptionPane.showMessageDialog(this, "O campo \"Login\" não foi preenchido devidamente.");
                return testarLogin(user.getNome(), user.getPassword());
            } catch (RemoteException ex) {
                ex.printStackTrace();
                JOptionPane.showMessageDialog(this, "Erro de RMI... Falha ao contactar o servidor. Por favor, tente novamente.");
                return testarLogin(user.getNome(), user.getPassword());
            } catch (SQLException ex) {
                JOptionPane.showMessageDialog(this, "Erro de SQL... Falha ao contactar a base de dados. Por favor, tente novamente.");
                return testarLogin(user.getNome(), user.getPassword());
            } catch (WrongPasswordException ex) {
                JOptionPane.showMessageDialog(this, "A password está errada.");
                return testarLogin(user.getNome(), user.getPassword());
            } catch (UserNotFoundException ex) {
                JOptionPane.showMessageDialog(this, "O utilizador não existe ou não foi encontrado.");
                return testarLogin(user.getNome(), user.getPassword());
            } catch (PasswordNotValidException ex) {
                JOptionPane.showMessageDialog(this, "O campo \"Password\" não foi preenchido devidamente.");
                return testarLogin(user.getNome(), user.getPassword());
            }
        } else {
            return false;
        }
    }