From 5ea8340af226d7b21ec996ebf0969f1453b88443 Mon Sep 17 00:00:00 2001 From: Michael Wilson Date: Tue, 14 Oct 2014 14:36:04 +0200 Subject: Auswahl für Loginverfahren hinzugefügt --- .../src/main/java/gui/intro/Login_GUI.java | 689 +++++++++++---------- 1 file changed, 372 insertions(+), 317 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 3f0b99c5..e8a62bce 100644 --- a/dozentenmodul/src/main/java/gui/intro/Login_GUI.java +++ b/dozentenmodul/src/main/java/gui/intro/Login_GUI.java @@ -1,317 +1,372 @@ -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; - -@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; - - /** - * 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, 603, 400); - 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(150, 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); - - chckbxBenutzernameSpeichern = new JCheckBox("Benutzername speichern"); - chckbxBenutzernameSpeichern.setBounds(292, 222, 237, 23); - contentPane.add(chckbxBenutzernameSpeichern); - - // Erzeugen und Hinzufuegen des Labels - JLabel LabelUser = new JLabel("bwIDM-Benutzername:"); - LabelUser.setBounds(111, 164, 134, 20); - contentPane.add(LabelUser); - - // Erzeugen und Hinzufuegen des Passwortfeldes - lblpass = new JPasswordField(); - lblpass.setToolTipText("Bitte geben Sie Ihr bwIDM-Passwort ein."); - lblpass.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - performLogin(); - } - }); - lblpass.setBounds(292, 195, 237, 20); - contentPane.add(lblpass); - - // Erzeugen und Hinzufuegen des Textfeldes - lblusername = new JTextField(); - lblusername - .setToolTipText("Bitte geben Sie Ihren bwIDM-Benutzernamen ein."); - - // Lese Information aus der Konfigurationsdatei - lblusername.setText(Config.getUsername()); - chckbxBenutzernameSpeichern.setSelected(Config.getSaveUsername()); - - lblusername.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent arg0) { - performLogin(); - } - }); - lblusername.setBounds(292, 164, 237, 20); - contentPane.add(lblusername); - lblusername.setColumns(10); - - // Erzeugen und Hinzufuegen des Labels - JLabel LabelPass = new JLabel("bwIDM-Passwort:"); - LabelPass.setBounds(111, 195, 134, 20); - contentPane.add(LabelPass); - - lblConnectionInfo.setHorizontalAlignment(SwingConstants.LEFT); - lblConnectionInfo.setBounds(111, 290, 418, 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(292, 252, 237, 23); - contentPane.add(BtnLogin); - - 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.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 radioButton; + + /** + * 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("Regisitriert 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); + + radioButton = new JRadioButton("Direkte Verbindung zum Satelliten"); + radioButton.setSelected(true); + radioButton.setBounds(32, 85, 244, 23); + panel_1.add(radioButton); + + 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 -- cgit v1.2.3-55-g7522