From 769174487493ea565a2d84217dc612fca36ae552 Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Wed, 15 Oct 2014 13:22:59 +0200 Subject: [client] Login_GUI: clicking radiobuttons for the login type now shows the corresponding login mask --- .../src/main/java/gui/intro/Login_GUI.java | 848 ++++++++++++--------- 1 file changed, 476 insertions(+), 372 deletions(-) (limited to 'dozentenmodul/src/main/java/gui/intro/Login_GUI.java') diff --git a/dozentenmodul/src/main/java/gui/intro/Login_GUI.java b/dozentenmodul/src/main/java/gui/intro/Login_GUI.java index b43c6a4d..4940e4c9 100644 --- a/dozentenmodul/src/main/java/gui/intro/Login_GUI.java +++ b/dozentenmodul/src/main/java/gui/intro/Login_GUI.java @@ -1,372 +1,476 @@ -package gui.intro; - -import java.awt.Color; -import java.awt.Component; -import java.awt.Image; -import java.awt.SystemColor; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; -import java.util.Arrays; - -import javax.swing.ImageIcon; -import javax.swing.JButton; -import javax.swing.JCheckBox; -import javax.swing.JFrame; -import javax.swing.JLabel; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JPasswordField; -import javax.swing.JTextField; -import javax.swing.SwingConstants; -import javax.swing.UIManager; -import javax.swing.UnsupportedLookAndFeelException; -import javax.swing.border.EmptyBorder; - -import models.SessionData; -import models.person; - -import org.apache.log4j.Logger; -import org.apache.thrift.TException; -import org.openslx.imagemaster.thrift.iface.ImageServer.Client; -import org.openslx.imagemaster.thrift.iface.UserInfo; - -import thrift.MasterThriftConnection; -import thrift.ThriftConnection; -import util.GuiOrganizer; -import util.ResourceLoader; -import config.Config; -import java.awt.Choice; -import javax.swing.border.TitledBorder; -import javax.swing.JRadioButton; - -@SuppressWarnings("serial") -public class Login_GUI extends JFrame { - - /** - * Logger instance for this class. - */ - private final static Logger LOGGER = Logger.getLogger(Login_GUI.class); - - private JPanel contentPane; - private JTextField lblusername; - private JPasswordField lblpass; - JLabel lblConnectionInfo = new JLabel(""); - boolean isClientReturnedCorrectly = false; - JCheckBox chckbxBenutzernameSpeichern; - private static final String HELP_MESSAGE = ""; - Component c = null; - private JPasswordField lblSatIP; - private Choice choice; - private JLabel lblIdp; - private JPanel panel; - private JPanel panel_1; - private JRadioButton rdbtnBwIDM; - private JRadioButton rdbtnDirekteVerbindung; - private JRadioButton rdbtnTestzugangMitFestem; - - /** - * Create the frame. - */ - public Login_GUI() { - addWindowListener(new WindowAdapter() { - @Override - public void windowClosing(WindowEvent e) { - System.exit(0); - } - }); - - // Fenster darf nicht vergroessert werden - setResizable(false); - - try { - // Setzt das Look and Feel auf System - UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); - } catch (ClassNotFoundException | InstantiationException - | IllegalAccessException | UnsupportedLookAndFeelException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - // Titel des Fensters setzen - setTitle("bwLehrpool Suite"); - // Aktion die beim Schliessen durchgefuehrt werden soll - setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - - // Größe setzen und mittig ausrichten - setBounds(0, 0, 785, 430); - GuiOrganizer.centerGUI(this); - - // Erzeugen eines Panels - contentPane = new JPanel(); - // Hintergrund Farbe des Panels setzen - contentPane.setBackground(SystemColor.menu); - // Rahmen des Fensters setzen - contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); - setContentPane(contentPane); - // Layout setzen - contentPane.setLayout(null); - // Label fuer das Logo erzeugen - JLabel imgLabel = new JLabel(); - // Groesse und Position des Logos festelegen - imgLabel.setBounds(231, 11, 350, 142); - // Pfadangabe des Logos - - ImageIcon icon = ResourceLoader.getIcon("/img/Logo_bwLehrpool.png", - "Logo"); - // Skalierung des Logos - Image scaled = icon.getImage().getScaledInstance(270, 64, 0); - imgLabel.setIcon(new ImageIcon(scaled)); - // Hinzufuegen des Logos in das Fenster - contentPane.add(imgLabel); - - lblConnectionInfo.setHorizontalAlignment(SwingConstants.LEFT); - lblConnectionInfo.setBounds(10, 359, 449, 20); - lblConnectionInfo.setEnabled(true); - lblConnectionInfo.setText("Info: Bereit für Login"); - - contentPane.add(lblConnectionInfo); - - // Erzeugen, Hinzufuegen und definierung der Aktion des Buttons - JButton BtnLogin = new JButton("Login"); - BtnLogin.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent arg0) { - - performLogin(); - }// end actionPerformed - }); - - BtnLogin.setBounds(488, 358, 239, 23); - contentPane.add(BtnLogin); - - panel = new JPanel(); - panel.setLayout(null); - panel.setBorder(new TitledBorder(null, "Zugangsdaten", - TitledBorder.LEADING, TitledBorder.TOP, null, null)); - panel.setBackground(SystemColor.menu); - panel.setBounds(354, 143, 400, 181); - contentPane.add(panel); - - chckbxBenutzernameSpeichern = new JCheckBox("Benutzername speichern"); - chckbxBenutzernameSpeichern.setBounds(135, 137, 237, 23); - panel.add(chckbxBenutzernameSpeichern); - chckbxBenutzernameSpeichern.setSelected(Config.getSaveUsername()); - - // Erzeugen und Hinzufuegen des Labels - JLabel LabelUser = new JLabel("Benutzername:"); - LabelUser.setBounds(25, 60, 82, 20); - panel.add(LabelUser); - - // Erzeugen und Hinzufuegen des Passwortfeldes - lblpass = new JPasswordField(); - lblpass.setBounds(135, 85, 237, 20); - panel.add(lblpass); - lblpass.setToolTipText("Bitte geben Sie Ihr bwIDM-Passwort ein."); - - // Erzeugen und Hinzufuegen des Textfeldes - lblusername = new JTextField(); - lblusername.setBounds(135, 60, 237, 20); - panel.add(lblusername); - lblusername - .setToolTipText("Bitte geben Sie Ihren bwIDM-Benutzernamen ein."); - - // Lese Information aus der Konfigurationsdatei - lblusername.setText(Config.getUsername()); - - lblusername.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent arg0) { - performLogin(); - } - }); - lblusername.setColumns(10); - - // Erzeugen und Hinzufuegen des Labels - JLabel LabelPass = new JLabel("Passwort:"); - LabelPass.setBounds(25, 85, 82, 20); - panel.add(LabelPass); - - JLabel lblSatellitenIp = new JLabel("Satelliten IP:"); - lblSatellitenIp.setBounds(25, 105, 82, 20); - panel.add(lblSatellitenIp); - - lblSatIP = new JPasswordField(); - lblSatIP.setBounds(135, 110, 237, 20); - panel.add(lblSatIP); - lblSatIP.setToolTipText("Bitte geben Sie Ihr bwIDM-Passwort ein."); - - choice = new Choice(); - choice.setBounds(135, 35, 237, 20); - panel.add(choice); - - lblIdp = new JLabel("IDP:"); - lblIdp.setBounds(25, 35, 82, 20); - panel.add(lblIdp); - lblpass.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - performLogin(); - } - }); - - panel_1 = new JPanel(); - panel_1.setLayout(null); - panel_1.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Zugangsart", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(0, 0, 0))); - panel_1.setBackground(SystemColor.menu); - panel_1.setBounds(10, 143, 334, 181); - contentPane.add(panel_1); - - rdbtnBwIDM = new JRadioButton("Registriert bei bwIDM"); - rdbtnBwIDM.setBounds(32, 35, 244, 23); - panel_1.add(rdbtnBwIDM); - - rdbtnDirekteVerbindung = new JRadioButton("Direkte Verbindung zum Satelliten"); - rdbtnDirekteVerbindung.setBounds(32, 60, 244, 23); - panel_1.add(rdbtnDirekteVerbindung); - - rdbtnTestzugangMitFestem = new JRadioButton("Test-Zugang mit festem Benutzer"); - rdbtnTestzugangMitFestem.setSelected(true); - rdbtnTestzugangMitFestem.setBounds(32, 85, 244, 23); - panel_1.add(rdbtnTestzugangMitFestem); - - GuiOrganizer.centerGUI(this); - c = this; - - }// end LoginGUI() - - // Versuche den Benutzer einzuloggen - public void performLogin() { - org.openslx.imagemaster.thrift.iface.SessionData result = null; - // Connect to Master - MasterThriftConnection thrift = new MasterThriftConnection(); - Client client = thrift.getMasterThriftConnection(); - - - if (client == null) { - // Thrift connection to master could not be established - setStatus(Color.red, "Fehler: Masterserver nicht erreichbar.", null); - return; - } - - String passText = new String(lblpass.getPassword()); - UserInfo user = null; - // Log user in - try { - setStatus(Color.black, - "Authentifiziere - warte auf Antwort von Server...", null); - - result = client.authenticate(lblusername.getText(), passText); - - // Sanity checks - if (result.authToken == null || result.sessionId == null) { - setStatus(Color.red, "Antwort des Masterservers korrupt.", null); - LOGGER.info("Antwort des Masterservers korrupt"); - return; - } - - // User-Info - LOGGER.info("Authentifizierung von '" + lblusername.getText() + "' erfolgreich."); - user = client.getUserFromToken(result.authToken); - - } catch (org.openslx.imagemaster.thrift.iface.AuthenticationException e) { - setStatus( - Color.red, - "Fehler: Zugangsdaten nicht akzeptiert.", - "Benutzeranmeldung fehlgeschlagen: Bitte Benutzername und Passwort überprüfen.\n" - + e.message); - e.printStackTrace(); - return; - } catch (TException e) { - setStatus(Color.red, - "Kommunikation mit Masterserver fehlgeschlagen.", - Arrays.toString(e.getStackTrace())); - return; - } - - // set Information - SessionData.session.setAuthToken(result.authToken); - SessionData.session.setSessionID(result.sessionId); - SessionData.session.setServerAdress(result.serverAddress); - - // Satellite-Connection - setStatus(Color.black, "Hole Verbindungsdaten von Server...", null); - // set connection to bwLehrpoolSuiteServer - ThriftConnection bwthrift = new ThriftConnection(); - server.generated.Server.Client bwClient = bwthrift.getThriftConnection(); - models.Client.clientcon.setClient(bwClient); - - // User-Info - LOGGER.debug("Session-ID: " + result.sessionId); - LOGGER.debug("Token: " + result.authToken); - setStatus(Color.green, "Daten erhalten.", null); - - String hochschule = user.eMail.substring(user.eMail.indexOf("@") + 1); - - //person.verantwortlicher.setUsername(lblusername.getText().substring(0,lblusername.getText().indexOf("@"))); - person.verantwortlicher.setUsername(lblusername.getText().trim()); - person.verantwortlicher.setUserID(lblusername.getText().trim()); - person.verantwortlicher.setName(user.lastName); - person.verantwortlicher.setVorname(user.firstName); - person.verantwortlicher.setEMail(user.eMail); - person.verantwortlicher.setHochschule(hochschule); - - // Spaeter ueber result.getRole zum Beispiel die Rolle holen - person.verantwortlicher.setRole("Dozent"); - // person.verantwortlicher.setRole("Admin"); - // person.verantwortlicher.setRole("Student"); - // person.verantwortlicher.setRole("GetToTheChopper!"); - - if (chckbxBenutzernameSpeichern.isSelected()) { - Config.setUsername(lblusername.getText()); - Config.setSaveUsername(true); - } else { - Config.setUsername(""); - Config.setSaveUsername(false); - } - // speichern - Config.store(); - - // Pruefe ob Bills Of Rights schon akzeptiert wurden, - // wenn nicht zeige diese an - if (!Config.getBillOfRights()) { - // Erstellen einer Instanz der Aktionsauswahl - BillOfRights_GUI re = new BillOfRights_GUI(); - re.setVisible(true); - // Schliessen des Fensters nach erfolgreichen Login - setVisible(false); - } else { - // Pruefe ob die Links zu vmware angezeigt werden - // sollen - if (!Config.getVmwareLicense()) { - VmWareLink_GUI vm = new VmWareLink_GUI(); - vm.setVisible(true); - setVisible(false); - } else { - - // oeffne das Hauptmenue - MainMenue_GUI main = new MainMenue_GUI(c); - main.setVisible(true); - setVisible(false); - } - } - - }// end performLogin - - /** - * Set connection status message, optionally show message box. - * - * @param color - * Color to display status message in. - * @param shortMessage - * The message to display. - * @param longMessage - * Optional message to show in a message box. null means don't - * show. - */ - private void setStatus(Color color, String shortMessage, String longMessage) { - LOGGER.info(shortMessage); - lblConnectionInfo.setForeground(color); - lblConnectionInfo.setText(shortMessage); - if (longMessage != null) - JOptionPane.showMessageDialog(c, longMessage, - "Anmeldung fehlgeschlagen", JOptionPane.ERROR_MESSAGE); - } -}// end class +package gui.intro; + +import java.awt.CardLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Image; +import java.awt.SystemColor; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.util.Arrays; + +import javax.swing.ButtonGroup; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JPasswordField; +import javax.swing.JTextField; +import javax.swing.SwingConstants; +import javax.swing.UIManager; +import javax.swing.UnsupportedLookAndFeelException; +import javax.swing.border.EmptyBorder; + +import models.SessionData; +import models.person; + +import org.apache.log4j.Logger; +import org.apache.thrift.TException; +import org.openslx.imagemaster.thrift.iface.ImageServer.Client; +import org.openslx.imagemaster.thrift.iface.UserInfo; + +import thrift.MasterThriftConnection; +import thrift.ThriftConnection; +import util.GuiOrganizer; +import util.ResourceLoader; +import config.Config; + +import java.awt.Choice; + +import javax.swing.border.TitledBorder; +import javax.swing.JRadioButton; + +@SuppressWarnings("serial") +public class Login_GUI extends JFrame { + + /** + * Logger instance for this class. + */ + private final static Logger LOGGER = Logger.getLogger(Login_GUI.class); + + // String constants representing the different login methods + private final static String LOGIN_TYPE_BWIDM = "bwidm"; + private final static String LOGIN_TYPE_BWLEHRPOOL = "bwlp"; + private final static String LOGIN_TYPE_SATLLITE = "sat"; + + private JPanel contentPane; + private JTextField lblusername; + private JPasswordField lblpass; + JLabel lblConnectionInfo = new JLabel(""); + boolean isClientReturnedCorrectly = false; + JCheckBox chckbxBenutzernameSpeichern; + private static final String HELP_MESSAGE = ""; + Component c = null; + + private JPanel panel; + private JPanel panel_1; + private JLabel LabelUser; + private JLabel LabelPass; + + // radio button and group for login types. + private ButtonGroup bgLoginType; + private JRadioButton rdbtnBwIDM; + private JRadioButton rdbtnDirekteVerbindung; + private JRadioButton rdbtnMasterserver; + // its action listener + private ActionListener loginTypeActionListener; + + // bwIDM label and dropdown + private Choice choice; + private JLabel lblIdp; + + // Satellite IP label and text field + private JLabel lblSatellitenIp; + private JTextField lblSatIP; + + /** + * Create the frame. + */ + public Login_GUI() { + addWindowListener(new WindowAdapter() { + @Override + public void windowClosing(WindowEvent e) { + System.exit(0); + } + }); + + // Fenster darf nicht vergroessert werden + setResizable(false); + + try { + // Setzt das Look and Feel auf System + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } catch (ClassNotFoundException | InstantiationException + | IllegalAccessException | UnsupportedLookAndFeelException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + // Titel des Fensters setzen + setTitle("bwLehrpool Suite"); + // Aktion die beim Schliessen durchgefuehrt werden soll + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + // Größe setzen und mittig ausrichten + setBounds(0, 0, 785, 430); + GuiOrganizer.centerGUI(this); + + // Erzeugen eines Panels + contentPane = new JPanel(); + // Hintergrund Farbe des Panels setzen + contentPane.setBackground(SystemColor.menu); + // Rahmen des Fensters setzen + contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); + setContentPane(contentPane); + // Layout setzen + contentPane.setLayout(null); + // Label fuer das Logo erzeugen + JLabel imgLabel = new JLabel(); + // Groesse und Position des Logos festelegen + imgLabel.setBounds(231, 11, 350, 142); + // Pfadangabe des Logos + + ImageIcon icon = ResourceLoader.getIcon("/img/Logo_bwLehrpool.png", + "Logo"); + // Skalierung des Logos + Image scaled = icon.getImage().getScaledInstance(270, 64, 0); + imgLabel.setIcon(new ImageIcon(scaled)); + // Hinzufuegen des Logos in das Fenster + contentPane.add(imgLabel); + + lblConnectionInfo.setHorizontalAlignment(SwingConstants.LEFT); + lblConnectionInfo.setBounds(10, 359, 449, 20); + lblConnectionInfo.setEnabled(true); + lblConnectionInfo.setText("Info: Bereit für Login"); + + contentPane.add(lblConnectionInfo); + + // Erzeugen, Hinzufuegen und definierung der Aktion des Buttons + JButton BtnLogin = new JButton("Login"); + BtnLogin.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent arg0) { + performLogin(); + }// end actionPerformed + }); + + BtnLogin.setBounds(488, 358, 239, 23); + contentPane.add(BtnLogin); + + // Start of the actual content of the right panel + panel = new JPanel(); + panel.setLayout(null); + panel.setBorder(new TitledBorder(null, "Zugangsdaten", + TitledBorder.LEADING, TitledBorder.TOP, null, null)); + panel.setBackground(SystemColor.menu); + panel.setBounds(354, 143, 400, 181); + contentPane.add(panel); + + chckbxBenutzernameSpeichern = new JCheckBox("Benutzername speichern"); + chckbxBenutzernameSpeichern.setBounds(135, 137, 237, 23); + chckbxBenutzernameSpeichern.setSelected(Config.getSaveUsername()); + panel.add(chckbxBenutzernameSpeichern); + + // Erzeugen und Hinzufuegen des Labels + LabelUser = new JLabel("Benutzername:"); + LabelUser.setBounds(25, 60, 82, 20); + panel.add(LabelUser); + + // Erzeugen und Hinzufuegen des Textfeldes + lblusername = new JTextField(); + lblusername.setBounds(135, 60, 237, 20); + lblusername.setToolTipText("Bitte geben Sie Ihren bwIDM-Benutzernamen ein."); + lblusername.setColumns(10); + // Lese Benutzername aus der Konfigurationsdatei + lblusername.setText(Config.getUsername()); + lblusername.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent arg0) { + performLogin(); + } + }); + panel.add(lblusername); + + // Erzeugen und Hinzufuegen des Labels + LabelPass = new JLabel("Passwort:"); + LabelPass.setBounds(25, 85, 82, 20); + panel.add(LabelPass); + + // Erzeugen und Hinzufuegen des Passwortfeldes + lblpass = new JPasswordField(); + lblpass.setBounds(135, 85, 237, 20); + lblpass.setToolTipText("Bitte geben Sie Ihr bwIDM-Passwort ein."); + lblpass.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + performLogin(); + } + }); + panel.add(lblpass); + + lblSatellitenIp = new JLabel("Satelliten IP:"); + lblSatellitenIp.setBounds(25, 105, 82, 20); + //panel.add(lblSatellitenIp); + + lblSatIP = new JTextField(); + lblSatIP.setBounds(135, 110, 237, 20); + lblSatIP.setToolTipText("Bitte geben Sie die IP-Adresse des Satelliten ein."); + //panel.add(lblSatIP); + + choice = new Choice(); + choice.setBounds(135, 35, 237, 20); + //panel.add(choice); + + lblIdp = new JLabel("IDP:"); + lblIdp.setBounds(25, 35, 82, 20); + //panel.add(lblIdp); + + // action listener for the radio buttons to + // toggle the gui elements depending on the login type + loginTypeActionListener = new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + toggleLoginType(e.getActionCommand()); + + } + }; + + panel_1 = new JPanel(); + panel_1.setLayout(null); + panel_1.setBorder(new TitledBorder( + UIManager.getBorder("TitledBorder.border"), "Zugangsart", + TitledBorder.LEADING, TitledBorder.TOP, null, new Color(0, 0, 0))); + panel_1.setBackground(SystemColor.menu); + panel_1.setBounds(10, 143, 334, 181); + contentPane.add(panel_1); + + // group radio button for the login type together + bgLoginType = new ButtonGroup(); + + rdbtnBwIDM = new JRadioButton("bwIDM"); + rdbtnBwIDM.setBounds(32, 35, 244, 23); + rdbtnBwIDM.setActionCommand(LOGIN_TYPE_BWIDM); + rdbtnBwIDM.addActionListener(loginTypeActionListener); + bgLoginType.add(rdbtnBwIDM); + panel_1.add(rdbtnBwIDM); + + rdbtnMasterserver = new JRadioButton("bwLehrpool-Masterserver"); + rdbtnMasterserver.setSelected(true); + rdbtnMasterserver.setActionCommand(LOGIN_TYPE_BWLEHRPOOL); + rdbtnMasterserver.addActionListener(loginTypeActionListener); + rdbtnMasterserver.setBounds(32, 60, 244, 23); + bgLoginType.add(rdbtnMasterserver); + panel_1.add(rdbtnMasterserver); + + rdbtnDirekteVerbindung = new JRadioButton("Satellit"); + rdbtnDirekteVerbindung.setBounds(32, 85, 244, 23); + rdbtnDirekteVerbindung.setActionCommand(LOGIN_TYPE_SATLLITE); + rdbtnDirekteVerbindung.addActionListener(loginTypeActionListener); + bgLoginType.add(rdbtnDirekteVerbindung); + panel_1.add(rdbtnDirekteVerbindung); + + panel.setVisible(true); + panel_1.setVisible(true); + contentPane.setVisible(true); + + GuiOrganizer.centerGUI(this); + c = this; + + }// end LoginGUI() + + // Versuche den Benutzer einzuloggen + public void performLogin() { + LOGGER.info("Trying login of type: " + bgLoginType.getSelection().getActionCommand()); + org.openslx.imagemaster.thrift.iface.SessionData result = null; + // Connect to Master + MasterThriftConnection thrift = new MasterThriftConnection(); + Client client = thrift.getMasterThriftConnection(); + + + if (client == null) { + // Thrift connection to master could not be established + setStatus(Color.red, "Fehler: Masterserver nicht erreichbar.", null); + return; + } + + String passText = new String(lblpass.getPassword()); + UserInfo user = null; + // Log user in + try { + setStatus(Color.black, + "Authentifiziere - warte auf Antwort von Server...", null); + + result = client.authenticate(lblusername.getText(), passText); + + // Sanity checks + if (result.authToken == null || result.sessionId == null) { + setStatus(Color.red, "Antwort des Masterservers korrupt.", null); + LOGGER.info("Antwort des Masterservers korrupt"); + return; + } + + // User-Info + LOGGER.info("Authentifizierung von '" + lblusername.getText() + "' erfolgreich."); + user = client.getUserFromToken(result.authToken); + + } catch (org.openslx.imagemaster.thrift.iface.AuthenticationException e) { + setStatus( + Color.red, + "Fehler: Zugangsdaten nicht akzeptiert.", + "Benutzeranmeldung fehlgeschlagen: Bitte Benutzername und Passwort überprüfen.\n" + + e.message); + e.printStackTrace(); + return; + } catch (TException e) { + setStatus(Color.red, + "Kommunikation mit Masterserver fehlgeschlagen.", + Arrays.toString(e.getStackTrace())); + return; + } + + // set Information + SessionData.session.setAuthToken(result.authToken); + SessionData.session.setSessionID(result.sessionId); + SessionData.session.setServerAdress(result.serverAddress); + + // Satellite-Connection + setStatus(Color.black, "Hole Verbindungsdaten von Server...", null); + // set connection to bwLehrpoolSuiteServer + ThriftConnection bwthrift = new ThriftConnection(); + server.generated.Server.Client bwClient = bwthrift.getThriftConnection(); + models.Client.clientcon.setClient(bwClient); + + // User-Info + LOGGER.debug("Session-ID: " + result.sessionId); + LOGGER.debug("Token: " + result.authToken); + setStatus(Color.green, "Daten erhalten.", null); + + String hochschule = user.eMail.substring(user.eMail.indexOf("@") + 1); + + person.verantwortlicher.setUsername(lblusername.getText().trim()); + person.verantwortlicher.setUserID(lblusername.getText().trim()); + person.verantwortlicher.setName(user.lastName); + person.verantwortlicher.setVorname(user.firstName); + person.verantwortlicher.setEMail(user.eMail); + person.verantwortlicher.setHochschule(hochschule); + + // Spaeter ueber result.getRole zum Beispiel die Rolle holen + person.verantwortlicher.setRole("Dozent"); + + if (chckbxBenutzernameSpeichern.isSelected()) { + Config.setUsername(lblusername.getText()); + Config.setSaveUsername(true); + } else { + Config.setUsername(""); + Config.setSaveUsername(false); + } + // speichern + Config.store(); + + // Pruefe ob Bills Of Rights schon akzeptiert wurden, + // wenn nicht zeige diese an + if (!Config.getBillOfRights()) { + // Erstellen einer Instanz der Aktionsauswahl + BillOfRights_GUI re = new BillOfRights_GUI(); + re.setVisible(true); + // Schliessen des Fensters nach erfolgreichen Login + setVisible(false); + } else { + // Pruefe ob die Links zu vmware angezeigt werden + // sollen + if (!Config.getVmwareLicense()) { + VmWareLink_GUI vm = new VmWareLink_GUI(); + vm.setVisible(true); + setVisible(false); + } else { + + // oeffne das Hauptmenue + MainMenue_GUI main = new MainMenue_GUI(c); + main.setVisible(true); + setVisible(false); + } + } + + }// end performLogin + + /** + * Set connection status message, optionally show message box. + * + * @param color + * Color to display status message in. + * @param shortMessage + * The message to display. + * @param longMessage + * Optional message to show in a message box. null means don't + * show. + */ + private void setStatus(Color color, String shortMessage, String longMessage) { + LOGGER.info(shortMessage); + lblConnectionInfo.setForeground(color); + lblConnectionInfo.setText(shortMessage); + if (longMessage != null) + JOptionPane.showMessageDialog(c, longMessage, + "Anmeldung fehlgeschlagen", JOptionPane.ERROR_MESSAGE); + } + + /** + * Toggle the elements needed for the different login types. + * + * @param type + * Type of the login to toggle. Valid are: + * 'bwidm', 'bwlp', 'sat' + */ + private void toggleLoginType(String type) { + LOGGER.info("Toggling to login method to: " + type); + panel.setVisible(false); + switch(type) { + case LOGIN_TYPE_BWIDM: + panel.remove(lblSatIP); + panel.remove(lblSatellitenIp); + panel.add(lblIdp); + panel.add(choice); + panel.add(LabelPass); + lblpass.setText(""); + lblpass.setToolTipText("Bitte geben Sie Ihr bwIDM-Passwort ein."); + panel.add(lblpass); + lblusername.setToolTipText("Bitte geben Sie Ihr bwIDM-Benutzername ein."); + panel.revalidate(); + panel.repaint(); + panel.setVisible(true); + break; + case LOGIN_TYPE_BWLEHRPOOL: + panel.remove(choice); + panel.remove(lblIdp); + panel.remove(lblSatIP); + panel.remove(lblSatellitenIp); + panel.add(LabelPass); + lblpass.setToolTipText("Bitte geben Sie Ihr bwLehrpool-Passwort ein."); + panel.add(lblpass); + lblusername.setToolTipText("Bitte geben Sie Ihr bwLehrpool-Benutzername ein."); + panel.revalidate(); + panel.repaint(); + panel.setVisible(true); + break; + case LOGIN_TYPE_SATLLITE: + panel.remove(choice); + panel.remove(lblIdp); + panel.remove(LabelPass); + panel.remove(lblpass); + lblSatIP.setBounds(135, 85, 237, 20); + lblSatIP.setText(""); + panel.add(lblSatIP); + lblSatellitenIp.setBounds(25, 85, 82, 20); + panel.add(lblSatellitenIp); + panel.revalidate(); + panel.repaint(); + panel.setVisible(true); + break; + default: + LOGGER.error("Unknown action '" + type + "'. Ignoring."); + panel.setVisible(true); + return; + } + + } +}// end class -- cgit v1.2.3-55-g7522