package gui.intro; import java.awt.Color; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.Image; import java.awt.SystemColor; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; import java.io.IOException; import javax.swing.ImageIcon; import javax.swing.JButton; 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.UIManager; import javax.swing.UnsupportedLookAndFeelException; import javax.swing.border.EmptyBorder; import models.SessionData; import models.person; import org.apache.thrift.TException; import org.ini4j.Wini; import thrift.MasterThriftConnection; import thrift.ImageServer.Client; import thrift.UserInfo; import config.config_file; import javax.swing.SwingConstants; @SuppressWarnings("serial") public class Login_GUI extends JFrame { private JPanel contentPane; private JTextField lblusername; private JPasswordField lblpass; JLabel lblConnectionInfo = new JLabel(""); boolean isClientReturnedCorrectly = false; boolean login; String masterServerIP = MasterThriftConnection.MASTERSERVERIP; MasterThriftConnection thrift; Client client; String token; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { // Prüfe und Erzeuge gegebenfalls Config config_file cf = new config_file(); boolean conf = cf.createConfig(); if (conf == true) { // Aufruf und Anzeige des Login Fensters Login_GUI frame = new Login_GUI(); frame.setVisible(true); } else { JOptionPane.showMessageDialog(null, "Fehler beim erzeugen der Konfigurationsfile", "Message", JOptionPane.ERROR_MESSAGE); } } catch (Exception e) { e.printStackTrace(); JOptionPane.showMessageDialog(null, e.getStackTrace(), "Message", JOptionPane.ERROR_MESSAGE); } } }); } /** * Create the frame. */ public Login_GUI() { addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); // Fenster darf nicht vergrößert 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(); JOptionPane.showMessageDialog(null, e.getCause()+"\n"+e.getMessage(), "Debug-Message", JOptionPane.ERROR_MESSAGE); } // Titel des Fensters setzen setTitle("Dozentenmodul *Prototyp*"); // Aktion die beim Schließen durchgeführt werden soll setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Größe des Fensters definieren Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); int top = (screenSize.height - 400) / 2; int left = (screenSize.width - 603) / 2; setBounds(left, top, 603, 400); // 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 für das Logo erzeugen JLabel imgLabel = new JLabel(); // Größe und Position des Logos festelegen imgLabel.setBounds(150, 11, 350, 142); // Pfadangabe des Logos ImageIcon icon = new ImageIcon(getClass().getResource( "/Logo_bwLehrpool.png"), "Logo"); // Skalierung des Logos Image scaled = icon.getImage().getScaledInstance(270, 64, 0); imgLabel.setIcon(new ImageIcon(scaled)); // Hinzufügen des Logos in das Fenster contentPane.add(imgLabel); // Erzeugen und Hinzufügen des Labels JLabel LabelUser = new JLabel("bwIDM-Benutzername:"); LabelUser.setBounds(111, 164, 134, 20); contentPane.add(LabelUser); // Erzeugen und Hinzufügen des Textfeldes lblusername = new JTextField(); lblusername .setToolTipText("Bitte geben Sie Ihren bwIDM-Benutzernamen ein."); lblusername.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { performLogin(); } }); lblusername.setBounds(292, 164, 237, 20); contentPane.add(lblusername); lblusername.setColumns(10); // Erzeugen und Hinzufügen des Labels JLabel LabelPass = new JLabel("bwIDM-Passwort:"); LabelPass.setBounds(111, 195, 134, 20); contentPane.add(LabelPass); // Erzeugen, Hinzufügen 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, 244, 237, 23); contentPane.add(BtnLogin); // Erzeugen und Hinzufügen 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); lblConnectionInfo.setHorizontalAlignment(SwingConstants.LEFT); lblConnectionInfo.setBounds(292, 290, 237, 20); contentPane.add(lblConnectionInfo); }// end LoginGUI() // Versuche den Benutzer einzuloggen public void performLogin() { login = false; thrift = new MasterThriftConnection(); client = thrift.getMasterThriftConnection(); token = null; thrift.SessionData result = null; try { login = true; String passText = new String(lblpass.getPassword()); System.out.println("Benutzer: " + lblusername.getText() + "\nPasswort: " + passText); // check if client has received a connection with information or a // null package if (checkClientPackage() == true) { // package has information result = client.authenticate(lblusername.getText(), passText); SessionData.session.setAuthToken(result.authToken); SessionData.session.setSessionID(result.sessionId); SessionData.session.setServerAdress(result.serverAddress); System.out.println("Satellit-Adresse: " + result.serverAddress); System.out .println("Konnte mich beim MasterServer authentifizieren. Meine Session-ID ist " + result.sessionId + ", mein Token für den Satelliten " + result.authToken); if (login == true) { try { Wini ini = new Wini( new File( "C:\\Users\\" + System.getProperty("user.name") + "\\AppData\\Roaming\\bwLehrpoolSuite\\config.ini")); // Prüfe ob Bills Of Rights schon akzeptiert wurden, // wenn // nicht zeige diese an if (ini.get("main", "BillOfRights", boolean.class) == false) { // Erstellen einer Instanz der Aktionsauswahl BillOfRights_GUI re = new BillOfRights_GUI(); re.setVisible(true); // Schließen des Fensters nach erfolgreichen Login setVisible(false); } else { // Prüfe ob die Links zu vmware angezeigt werden // sollen if (ini.get("main", "vmware", boolean.class) == false) { VmWareLink_GUI vm = new VmWareLink_GUI(); vm.setVisible(true); setVisible(false); } else { if(SessionData.session.getAuthToken()==null){ System.out.println("Token ist null"); } UserInfo user = client.getUserFromToken(SessionData.session.getAuthToken()); String hochschule = user.eMail.substring( user.eMail.indexOf("@") + 1, user.eMail.indexOf(".", user.eMail.indexOf("@"))); person.verantwortlicher.setUsername(lblusername.getText().substring(0, lblusername.getText().indexOf("@"))); person.verantwortlicher.setName(user.lastName); person.verantwortlicher .setVorname(user.firstName); person.verantwortlicher.setEMail(user.eMail); person.verantwortlicher .setHochschule(hochschule); // Öffne das Hauprmenü MainMenue_GUI main = new MainMenue_GUI(); main.setVisible(true); setVisible(false); } } } catch (IOException | TException e) { // TODO Auto-generated catch block e.printStackTrace(); JOptionPane.showMessageDialog(null, e.getCause()+"\n"+e.getMessage(), "Debug-Message", JOptionPane.ERROR_MESSAGE); } } else { JOptionPane.showMessageDialog(null, "Login denied!", "Message", JOptionPane.INFORMATION_MESSAGE); } } else { // package from server is null login = false; lblConnectionInfo.setForeground(Color.red); lblConnectionInfo.setText("Fehler: Client nicht mit Server verbunden."); } } catch (thrift.AuthenticationException e) { System.out .println("Authentifizierung fehlgeschlagen: " + e.message); JOptionPane .showMessageDialog( null, "Benutzeranmeldung fehlgeschlagen: Bitte Benutzername und Passwort überprüfen.", "Anmeldung fehlgeschlagen", JOptionPane.ERROR_MESSAGE); e.printStackTrace(); JOptionPane.showMessageDialog(null, e.getCause()+"\n"+e.getMessage(), "Message", JOptionPane.ERROR_MESSAGE); return; } catch (TException e) { // TODO Auto-generated catch block e.printStackTrace(); JOptionPane.showMessageDialog(null, e.getCause()+"\n"+e.getMessage(), "Debug-Message", JOptionPane.ERROR_MESSAGE); return; } }// end performLogin public boolean checkClientPackage() { // check if client is null or has been returned with information if (client != null) { // client contains information isClientReturnedCorrectly = true; System.out.println("Masterserver (" + masterServerIP + ") ist erreichbar, Verbindungsinformationen erhalten"); } else { // client has returned with error isClientReturnedCorrectly = false; System.out.println("Fehler: Client hat von Masterserver (" + masterServerIP + ") keine korrekten Verbindungsdaten erhalten."); } return isClientReturnedCorrectly; }// end checkServerConnection() }// end class