From e0fe4136cd5d93aad92363ec7dd06069a09d36d1 Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Mon, 25 Jun 2018 14:05:18 +0200 Subject: [client] special default admin permissions case handling --- .../dozmod/gui/window/LectureDetailsWindow.java | 44 +++++++++++++++++----- 1 file changed, 35 insertions(+), 9 deletions(-) (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/window') diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java index c2c1f1d9..544dcc69 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java @@ -94,6 +94,11 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements */ private Map customPermissions; + /** + * Did the user have admin rights due to default permissions? + */ + private boolean adminRightsFromDefaultPermissions; + private final DialogChangeMonitor changeMonitor; private final AbstractControlWrapper changeListenerPermissions; @@ -313,6 +318,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements lblImageNameInfo.setText(image.getImageName()); } // init permission info + adminRightsFromDefaultPermissions = lecture.defaultPermissions.admin; ctlPermissionManager.initPanel(customPermissions, lecture.defaultPermissions, lecture.ownerId); chkCustomPermAdmin.setSelected(lecture.defaultPermissions.admin); chkCustomPermEdit.setSelected(lecture.defaultPermissions.edit); @@ -494,6 +500,14 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements : cboVersions.getItemAt(cboVersions.getSelectedIndex()).versionId; } + // Special case similar to ImageDetailsWindow:if the user had admin rights + // through default permissions, first save custom permissions. + if (adminRightsFromDefaultPermissions && changeListenerPermissions.isCurrentlyChanged()) { + if (!saveCustomPermissions()) { + return false; + } + changeListenerPermissions.reset(); + } // first build the LectureWrite from the GUI fields final LectureWrite metadata = new LectureWrite(txtTitle.getText(), txtDescription.getText(), lecture.getImageVersionId(), chkAutoUpdate.isSelected(), chkIsActive.isSelected(), @@ -503,7 +517,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements chkHasInternetAccess.isSelected(), lecture.getDefaultPermissions(), ctlLocationSelector.getSelectedLocationsAsIds(), ctlLocationSelector.getOnlyInSelection(), - // TODO: coming "false" is Location related + // TODO limitOnlyToAllowedUsers, default to false for now false, chkHasUsbAccess.isSelected()); metadata.setNetworkExceptions(ctlNetrulesConfigurator.getState(false)); metadata.setNetworkShares(ctlNetshareConfigurator.getState()); @@ -513,7 +527,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements try { ThriftManager.getSatClient().updateLecture(Session.getSatelliteToken(), lecture.getLectureId(), metadata); - LOGGER.info("Successfully save new metadata"); + LOGGER.info("Successfully saved new metadata"); } catch (TException e) { ThriftError.showMessage(JOptionPane.getFrameForComponent(this), LOGGER, e, "Fehler beim Speichern der Veranstaltung!"); @@ -521,13 +535,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements } if (changeListenerPermissions.isCurrentlyChanged()) { - try { - ThriftManager.getSatClient().writeLecturePermissions(Session.getSatelliteToken(), - lecture.lectureId, ctlPermissionManager.getPermissions()); - LOGGER.info("Successfully save new permissions"); - } catch (TException e) { - ThriftError.showMessage(JOptionPane.getFrameForComponent(this), LOGGER, e, - "Fehler beim Übertragen der Berechtigungen!"); + if (!saveCustomPermissions()) { return false; } } @@ -535,6 +543,24 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements return true; } + /** + * Helper to save custom user permissions. + * + * @return true if successfully saved, false otherwise. + */ + private boolean saveCustomPermissions() { + try { + ThriftManager.getSatClient().writeLecturePermissions(Session.getSatelliteToken(), + lecture.lectureId, ctlPermissionManager.getPermissions()); + LOGGER.info("Successfully saved custom permissions"); + return true; + } catch (TException e) { + ThriftError.showMessage(JOptionPane.getFrameForComponent(this), LOGGER, e, + "Fehler beim Übertragen der Berechtigungen!"); + } + return false; + } + /** * Checks if the given start and end date represent a valid time period. * This is the case, if start < end and if current time < end -- cgit v1.2.3-55-g7522