From b47ad995a65ba9cccd7fe2b7f889a4e83bbb11cb Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Thu, 7 Sep 2017 16:55:27 +0200 Subject: [client/server] remove GUEST_USER from netshares * added some sanity checks before adding a new network share in the table * added user feedback error message for invalid input * fixed text fields growing/shrinking depending on input --- .../dozmod/gui/control/NetshareConfigurator.java | 74 ++++++++++++---------- .../java/org/openslx/dozmod/util/FormatHelper.java | 4 +- .../java/org/openslx/bwlp/sat/web/WebServer.java | 11 +--- 3 files changed, 46 insertions(+), 43 deletions(-) diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/NetshareConfigurator.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/NetshareConfigurator.java index ac10e2bb..d36bc691 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/NetshareConfigurator.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/NetshareConfigurator.java @@ -1,9 +1,12 @@ package org.openslx.dozmod.gui.control; import java.awt.BorderLayout; +import java.awt.Color; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.ArrayList; @@ -43,7 +46,6 @@ public class NetshareConfigurator extends NetshareConfiguratorLayout { private static final long serialVersionUID = -3336605759245603655L; private final static Logger LOGGER = Logger.getLogger(NetshareConfigurator.class); - private List tblNetshareData = null; public NetshareConfigurator() { @@ -61,16 +63,17 @@ public class NetshareConfigurator extends NetshareConfiguratorLayout { @Override public void actionPerformed(ActionEvent e) { NetShareAuth selectedAuth = cboNetshareAuth.getItemAt(cboNetshareAuth.getSelectedIndex()); - boolean activate = selectedAuth == NetShareAuth.SPECIAL_USER; + if (selectedAuth == null) + return; + boolean activate = selectedAuth == NetShareAuth.OTHER_USER; // username field is needed to either special or guest user - tfUsername.setEnabled(activate || selectedAuth == NetShareAuth.GUEST_USER); - lblUsername.setEnabled(activate || selectedAuth == NetShareAuth.GUEST_USER); + tfUsername.setEnabled(activate); + lblUsername.setEnabled(activate); tfPassword.setEnabled(activate); lblPassword.setEnabled(activate); chkShowPass.setEnabled(activate); } }); - tfUsername.setEnabled(false); lblUsername.setEnabled(false); tfPassword.setEnabled(false); @@ -84,42 +87,48 @@ public class NetshareConfigurator extends NetshareConfiguratorLayout { NetShare input = new NetShare(); NetShareAuth inputNetShareAuth = cboNetshareAuth.getItemAt(cboNetshareAuth.getSelectedIndex()); if (inputNetShareAuth == null) { - LOGGER.error("Could not get the network share auth type from the combobox!"); + lblError.setText("Kein Authentifizierungstyp angegeben!"); return; } input.auth = inputNetShareAuth; input.path = tfSharePath.getText(); if (input.path == null || input.path.isEmpty()) { - LOGGER.error("Missing/empty network share URI!"); + lblError.setText("Kein Pfad angegeben!"); return; } switch (inputNetShareAuth) { - case GUEST_USER: - // guest mode requires guest account but not password - input.username = tfUsername.getText(); - break; case LOGIN_USER: + // this uses the bwLehrpool client's logged in user + // we don't need to have anything break; - case SPECIAL_USER: + case OTHER_USER: // save given username/password input.username = tfUsername.getText(); char[] inputPassword = tfPassword.getPassword(); input.password = new String(inputPassword); - Arrays.fill(inputPassword, '0'); + Arrays.fill(inputPassword, '0'); // prolly not relevant/sufficiant... + // if password is set but no username, error + if (!input.password.isEmpty() && input.username.isEmpty()) { + lblError.setText("Kein Nutzername angegeben!"); + return; + } break; default: input = null; break; } if (input == null) { - LOGGER.debug("Input bad, aborting."); + lblError.setText("Interner Fehler"); + LOGGER.debug("Bad input, aborting."); return; } // now decide whether to create a new entry or update existing one - if (tblNetshare.getSelectedItem() != null) { + NetShare oldEntry = tblNetshare.getSelectedItem(); + if (oldEntry != null) { // editing existing one, delete it from the internal data - if (!tblNetshareData.remove(tblNetshare.getSelectedItem())) { + if (!tblNetshareData.remove(oldEntry)) { + lblError.setText("Änderung fehlgeschlagen!"); LOGGER.debug("Failed to remove selected share for replacement!"); return; } @@ -128,9 +137,11 @@ public class NetshareConfigurator extends NetshareConfiguratorLayout { // creating a new one, either way add it to the list and update // the table, if its not present already if (tblNetshareData.contains(input)) { + lblError.setText("Existiert bereits!"); LOGGER.error("Network share already in the list, aborting."); return; } + lblError.setText(null); tblNetshareData.add(input); tblNetshare.getModel().setData(tblNetshareData); } @@ -254,7 +265,7 @@ class NetshareConfiguratorLayout extends JPanel { private final static String txtNetshareDesc = "Hier können Sie Netzlaufwerke angeben," + " die automatisch beim Start der Veranstaltung eingebunden werden sollen."; - protected QLabel lblShareAuth, lblSharePath, lblUsername, lblPassword; + protected QLabel lblShareAuth, lblSharePath, lblUsername, lblPassword, lblError; protected NetshareTable tblNetshare = new NetshareTable(); protected JTextField tfSharePath, tfUsername; @@ -280,34 +291,28 @@ class NetshareConfiguratorLayout extends JPanel { // middle netshare list grid.add(new QScrollPane(tblNetshare), 5).fill(true, true).expand(true, true); grid.nextRow(); - JPanel pnlButtonDelete = new JPanel(); - pnlButtonDelete.setLayout(new BoxLayout(pnlButtonDelete, BoxLayout.LINE_AXIS)); - btnDel = new JButton("Entfernen"); - pnlButtonDelete.add(Box.createGlue()); - pnlButtonDelete.add(btnDel, BorderLayout.LINE_END); - grid.add(pnlButtonDelete, 5).fill(true, false).expand(true, false); - grid.nextRow(); + JPanel pnlNewShare = new JPanel(); GridManager gridNewShare = new GridManager(pnlNewShare, 5, true); - pnlNewShare.setBorder(BorderFactory.createTitledBorder("Neues Netzlaufwerk")); + pnlNewShare.setBorder(BorderFactory.createTitledBorder("Details")); // bottom form to add a new share lblShareAuth = new QLabel("Authentifizierung"); gridNewShare.add(lblShareAuth); - gridNewShare.add(cboNetshareAuth, 4).fill(true, false).expand(true, false); // User (optional) + gridNewShare.add(cboNetshareAuth, 4).fill(true, false).expand(true, false); gridNewShare.nextRow(); lblSharePath = new QLabel("URI"); gridNewShare.add(lblSharePath); tfSharePath = new JTextField(); - gridNewShare.add(tfSharePath, 4).fill(true, false).expand(true, false); // User (optional) + gridNewShare.add(tfSharePath, 4).fill(true, false).expand(true, false); gridNewShare.nextRow(); lblUsername = new QLabel("Username"); gridNewShare.add(lblUsername); - tfUsername = new JTextField(); - gridNewShare.add(tfUsername, 1).fill(true, false).expand(true, false); // Password (optional) + tfUsername = new JTextField(20); + gridNewShare.add(tfUsername, 1).fill(true, false).expand(true, false); lblPassword = new QLabel("Passwort:"); gridNewShare.add(lblPassword); - tfPassword = new JPasswordField(); - gridNewShare.add(tfPassword, 2).fill(true, false).expand(true, false); // Password (optional) + tfPassword = new JPasswordField(20); + gridNewShare.add(tfPassword, 2).fill(true, false).expand(true, false); gridNewShare.nextRow(); chkShowPass = new JCheckBox("Passwort anzeigen"); JPanel pnlHidePass = new JPanel(); @@ -318,12 +323,17 @@ class NetshareConfiguratorLayout extends JPanel { gridNewShare.nextRow(); grid.add(pnlNewShare, 5).fill(true, false).expand(true, false); grid.nextRow(); - // bottom panels for right-aligned button... + // bottom panel for right-aligned button... JPanel pnlButtonAdd = new JPanel(); pnlButtonAdd.setLayout(new BoxLayout(pnlButtonAdd, BoxLayout.LINE_AXIS)); btnAdd = new JButton("Hinzufügen"); + btnDel = new JButton("Entfernen"); + lblError = new QLabel(""); + lblError.setForeground(Color.RED); + pnlButtonAdd.add(lblError); pnlButtonAdd.add(Box.createGlue()); pnlButtonAdd.add(btnAdd, BorderLayout.LINE_END); + pnlButtonAdd.add(btnDel, BorderLayout.LINE_END); grid.add(pnlButtonAdd, 5).fill(true, false).expand(true, false); grid.finish(false); } diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/util/FormatHelper.java b/dozentenmodul/src/main/java/org/openslx/dozmod/util/FormatHelper.java index 11ad277a..f77c580f 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/util/FormatHelper.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/util/FormatHelper.java @@ -179,9 +179,7 @@ public class FormatHelper { switch (auth) { case LOGIN_USER: return "Angemeldeter Nutzer"; - case GUEST_USER: - return "Gast Nutzer"; - case SPECIAL_USER: + case OTHER_USER: return "Spezifischer Nutzer"; default: return auth.toString(); diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/web/WebServer.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/web/WebServer.java index 111578d3..0975a443 100644 --- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/web/WebServer.java +++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/web/WebServer.java @@ -204,9 +204,8 @@ public class WebServer extends NanoHTTPD { } // TODO format expected from the client-side to // handle different types of login. Currently: - // * no username nor password => use credentials of logged in user - // * username set, no password => guest mode - // * username and password set => user-specificed credentials + // * no username, no password => use credentials of logged in user + // * username and optional password => user-specified credentials StringBuilder sb = new StringBuilder(); if (!list.isEmpty()) { for (NetShare share : list) { @@ -214,11 +213,7 @@ public class WebServer extends NanoHTTPD { if (share.auth == NetShareAuth.LOGIN_USER) { // nothing to do } - if (share.auth == NetShareAuth.GUEST_USER) { - sb.append(' '); - sb.append(share.username); - } - if (share.auth == NetShareAuth.SPECIAL_USER) { + if (share.auth == NetShareAuth.OTHER_USER) { sb.append(' '); sb.append(share.username); sb.append(' '); -- cgit v1.2.3-55-g7522