Index: lams_tool_zoom/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -r81abb42871bc57068ca574fa56e2f039ca04702a -r0ebb4cd78af814bc30d7ef26486f7f1ed60586fc --- lams_tool_zoom/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 81abb42871bc57068ca574fa56e2f039ca04702a) +++ lams_tool_zoom/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 0ebb4cd78af814bc30d7ef26486f7f1ed60586fc) @@ -50,6 +50,7 @@ advanced.startInMonitor =Only the teacher can start the meeting advanced.duration.switch =Limit duration of the meeting (recommended) advanced.duration =duration (minutes) +advanced.password =Require a password to join the meeting authoring.msg.cancel.save =Do you want to close this window without saving? monitor.summary.th.advancedSettings =Advanced settings monitor.summary.zoomSettings =Zoom settings Index: lams_tool_zoom/src/java/org/lamsfoundation/lams/tool/zoom/dbupdates/patch20200410.sql =================================================================== diff -u -r81abb42871bc57068ca574fa56e2f039ca04702a -r0ebb4cd78af814bc30d7ef26486f7f1ed60586fc --- lams_tool_zoom/src/java/org/lamsfoundation/lams/tool/zoom/dbupdates/patch20200410.sql (.../patch20200410.sql) (revision 81abb42871bc57068ca574fa56e2f039ca04702a) +++ lams_tool_zoom/src/java/org/lamsfoundation/lams/tool/zoom/dbupdates/patch20200410.sql (.../patch20200410.sql) (revision 0ebb4cd78af814bc30d7ef26486f7f1ed60586fc) @@ -3,9 +3,9 @@ -- LDEV-5006 Password protect Zoom meetings -ALTER TABLE tl_lazoom10_zoom ADD COLUMN meeting_password CHAR(6); +ALTER TABLE tl_lazoom10_zoom ADD COLUMN enable_meeting_password TINYINT(1) DEFAULT 0, + ADD COLUMN meeting_password CHAR(6); - -- If there were no errors, commit and restore autocommit to on COMMIT; SET AUTOCOMMIT = 1; Index: lams_tool_zoom/src/java/org/lamsfoundation/lams/tool/zoom/model/Zoom.java =================================================================== diff -u -r81abb42871bc57068ca574fa56e2f039ca04702a -r0ebb4cd78af814bc30d7ef26486f7f1ed60586fc --- lams_tool_zoom/src/java/org/lamsfoundation/lams/tool/zoom/model/Zoom.java (.../Zoom.java) (revision 81abb42871bc57068ca574fa56e2f039ca04702a) +++ lams_tool_zoom/src/java/org/lamsfoundation/lams/tool/zoom/model/Zoom.java (.../Zoom.java) (revision 0ebb4cd78af814bc30d7ef26486f7f1ed60586fc) @@ -97,10 +97,13 @@ @Column(name = "meeting_start_url") private String meetingStartUrl; - + @Column(name = "meeting_password") private String meetingPassword; + @Column(name = "enable_meeting_password") + private boolean enableMeetingPassword; + @OneToMany(mappedBy = "zoom") private Set zoomSessions; @@ -231,13 +234,21 @@ public void setMeetingStartUrl(String meetingStartUrl) { this.meetingStartUrl = meetingStartUrl; } - + + public boolean isEnableMeetingPassword() { + return enableMeetingPassword; + } + + public void setEnableMeetingPassword(boolean enableMeetingPassword) { + this.enableMeetingPassword = enableMeetingPassword; + } + public String getMeetingPassword() { - return meetingPassword; + return meetingPassword; } public void setMeetingPassword(String meetingPassword) { - this.meetingPassword = meetingPassword; + this.meetingPassword = meetingPassword; } public ZoomApi getApi() { @@ -257,7 +268,7 @@ zoom.setUid(null); // create an empty set for the zoomSession - zoom.zoomSessions = new HashSet(); + zoom.zoomSessions = new HashSet<>(); } catch (CloneNotSupportedException cnse) { logger.error("Error cloning " + Zoom.class); Index: lams_tool_zoom/src/java/org/lamsfoundation/lams/tool/zoom/service/ZoomService.java =================================================================== diff -u -re0e7f2a21f8c1f52bf6650e9b6a9718da3aae2d1 -r0ebb4cd78af814bc30d7ef26486f7f1ed60586fc --- lams_tool_zoom/src/java/org/lamsfoundation/lams/tool/zoom/service/ZoomService.java (.../ZoomService.java) (revision e0e7f2a21f8c1f52bf6650e9b6a9718da3aae2d1) +++ lams_tool_zoom/src/java/org/lamsfoundation/lams/tool/zoom/service/ZoomService.java (.../ZoomService.java) (revision 0ebb4cd78af814bc30d7ef26486f7f1ed60586fc) @@ -704,8 +704,10 @@ if (meetingJoinURL == null) { throw new ZoomException("Could not register user " + user.getUid() + " for meeting " + zoom.getMeetingId()); } - // strip URL from password so users need to provide it manually - meetingJoinURL = meetingJoinURL.replaceFirst("&pwd=[^&]+", ""); + if (zoom.isEnableMeetingPassword()) { + // strip URL from password so users need to provide it manually + meetingJoinURL = meetingJoinURL.replaceFirst("&pwd=[^&]+", ""); + } user.setMeetingJoinUrl(meetingJoinURL); zoomDAO.update(user); if (logger.isDebugEnabled()) { @@ -816,9 +818,11 @@ if (zoom.getDuration() != null) { bodyJSON.put("duration", zoom.getDuration()); } - String password = RandomPasswordGenerator.nextPassword(6); - bodyJSON.put("password", password); - zoom.setMeetingPassword(password); + if (zoom.isEnableMeetingPassword()) { + String password = RandomPasswordGenerator.nextPassword(6); + bodyJSON.put("password", password); + zoom.setMeetingPassword(password); + } HttpURLConnection connection = ZoomService.getZoomConnection("meetings/" + zoom.getMeetingId(), "PATCH", bodyJSON.toString(), zoom.getApi()); Index: lams_tool_zoom/src/java/org/lamsfoundation/lams/tool/zoom/util/ZoomUtil.java =================================================================== diff -u -r81abb42871bc57068ca574fa56e2f039ca04702a -r0ebb4cd78af814bc30d7ef26486f7f1ed60586fc --- lams_tool_zoom/src/java/org/lamsfoundation/lams/tool/zoom/util/ZoomUtil.java (.../ZoomUtil.java) (revision 81abb42871bc57068ca574fa56e2f039ca04702a) +++ lams_tool_zoom/src/java/org/lamsfoundation/lams/tool/zoom/util/ZoomUtil.java (.../ZoomUtil.java) (revision 0ebb4cd78af814bc30d7ef26486f7f1ed60586fc) @@ -58,7 +58,9 @@ } request.setAttribute(ZoomConstants.ATTR_MEETING_URL, meetingURL); - request.setAttribute(ZoomConstants.ATTR_MEETING_PASSWORD, zoom.getMeetingPassword()); + if (zoom.isEnableMeetingPassword()) { + request.setAttribute(ZoomConstants.ATTR_MEETING_PASSWORD, zoom.getMeetingPassword()); + } return errorMap; } } \ No newline at end of file Index: lams_tool_zoom/src/java/org/lamsfoundation/lams/tool/zoom/web/controller/AuthoringController.java =================================================================== diff -u -r845b503553ad948cb5db7b89950f7c5251ada5d7 -r0ebb4cd78af814bc30d7ef26486f7f1ed60586fc --- lams_tool_zoom/src/java/org/lamsfoundation/lams/tool/zoom/web/controller/AuthoringController.java (.../AuthoringController.java) (revision 845b503553ad948cb5db7b89950f7c5251ada5d7) +++ lams_tool_zoom/src/java/org/lamsfoundation/lams/tool/zoom/web/controller/AuthoringController.java (.../AuthoringController.java) (revision 0ebb4cd78af814bc30d7ef26486f7f1ed60586fc) @@ -83,7 +83,8 @@ * updateContent is called. */ @RequestMapping(path = "/definelater", method = RequestMethod.POST) - public String definelater(@ModelAttribute AuthoringForm authoringForm, HttpServletRequest request) throws ServletException { + public String definelater(@ModelAttribute AuthoringForm authoringForm, HttpServletRequest request) + throws ServletException { Long toolContentID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); Zoom zoom = zoomService.getZoomByContentId(toolContentID); zoom.setDefineLater(true); @@ -94,15 +95,15 @@ return readDatabaseData(authoringForm, zoom, request, ToolAccessMode.TEACHER); } - + /** * Common method for "unspecified" and "defineLater" */ private String readDatabaseData(AuthoringForm authoringForm, Zoom zoom, HttpServletRequest request, ToolAccessMode mode) throws ServletException { Long toolContentID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); String contentFolderID = WebUtil.readStrParam(request, AttributeNames.PARAM_CONTENT_FOLDER_ID); - + // Set up the authForm. copyProperties(authoringForm, zoom); @@ -168,6 +169,7 @@ zoom.setReflectOnActivity(authForm.isReflectOnActivity()); zoom.setReflectInstructions(authForm.getReflectInstructions()); zoom.setStartInMonitor(authForm.isStartInMonitor()); + zoom.setEnableMeetingPassword(authForm.isEnableMeetingPassword()); Integer duration = authForm.getDuration(); zoom.setDuration(duration != null && duration > 0 ? duration : null); } @@ -199,7 +201,7 @@ private SessionMap createSessionMap(Zoom zoom, ToolAccessMode mode, String contentFolderID, Long toolContentID) { - SessionMap map = new SessionMap(); + SessionMap map = new SessionMap<>(); map.put(ZoomConstants.KEY_MODE, mode); map.put(ZoomConstants.KEY_CONTENT_FOLDER_ID, contentFolderID); Index: lams_tool_zoom/src/java/org/lamsfoundation/lams/tool/zoom/web/controller/LearningController.java =================================================================== diff -u -r81abb42871bc57068ca574fa56e2f039ca04702a -r0ebb4cd78af814bc30d7ef26486f7f1ed60586fc --- lams_tool_zoom/src/java/org/lamsfoundation/lams/tool/zoom/web/controller/LearningController.java (.../LearningController.java) (revision 81abb42871bc57068ca574fa56e2f039ca04702a) +++ lams_tool_zoom/src/java/org/lamsfoundation/lams/tool/zoom/web/controller/LearningController.java (.../LearningController.java) (revision 0ebb4cd78af814bc30d7ef26486f7f1ed60586fc) @@ -231,7 +231,9 @@ } // if start in monitor is not set, this overwrites the URL set in ZoomUtil.startMeeting() above request.setAttribute(ZoomConstants.ATTR_MEETING_URL, meetingURL); - request.setAttribute(ZoomConstants.ATTR_MEETING_PASSWORD, zoom.getMeetingPassword()); + if (zoom.isEnableMeetingPassword()) { + request.setAttribute(ZoomConstants.ATTR_MEETING_PASSWORD, zoom.getMeetingPassword()); + } } } catch (Exception e) { Index: lams_tool_zoom/src/java/org/lamsfoundation/lams/tool/zoom/web/forms/AuthoringForm.java =================================================================== diff -u -rcd28f26327e5afe5f9797847d801eba0abab9144 -r0ebb4cd78af814bc30d7ef26486f7f1ed60586fc --- lams_tool_zoom/src/java/org/lamsfoundation/lams/tool/zoom/web/forms/AuthoringForm.java (.../AuthoringForm.java) (revision cd28f26327e5afe5f9797847d801eba0abab9144) +++ lams_tool_zoom/src/java/org/lamsfoundation/lams/tool/zoom/web/forms/AuthoringForm.java (.../AuthoringForm.java) (revision 0ebb4cd78af814bc30d7ef26486f7f1ed60586fc) @@ -49,6 +49,8 @@ private String sessionMapID; + private boolean enableMeetingPassword; + private SessionMap sessionMap; public String getSessionMapID() { @@ -123,6 +125,14 @@ this.title = title; } + public boolean isEnableMeetingPassword() { + return enableMeetingPassword; + } + + public void setEnableMeetingPassword(boolean enableMeetingPassword) { + this.enableMeetingPassword = enableMeetingPassword; + } + public void setSessionMap(SessionMap sessionMap) { this.sessionMap = sessionMap; } Index: lams_tool_zoom/web/pages/authoring/advanced.jsp =================================================================== diff -u -rcd28f26327e5afe5f9797847d801eba0abab9144 -r0ebb4cd78af814bc30d7ef26486f7f1ed60586fc --- lams_tool_zoom/web/pages/authoring/advanced.jsp (.../advanced.jsp) (revision cd28f26327e5afe5f9797847d801eba0abab9144) +++ lams_tool_zoom/web/pages/authoring/advanced.jsp (.../advanced.jsp) (revision 0ebb4cd78af814bc30d7ef26486f7f1ed60586fc) @@ -16,6 +16,13 @@
+ +
+ +