This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new 960397760 [OPENMEETINGS-2836] Calendar event is viewable only by 
owner/attendee
960397760 is described below

commit 960397760982c3430126dade54890ba557694fa2
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Thu Sep 10 10:29:05 2026 +0700

    [OPENMEETINGS-2836] Calendar event is viewable only by owner/attendee
---
 .../openmeetings/web/user/calendar/AppointmentDialog.java     | 11 ++++++++---
 .../apache/openmeetings/web/user/calendar/CalendarPanel.java  |  3 +++
 .../test/java/org/apache/openmeetings/web/TestCalendar.java   |  4 ++--
 3 files changed, 13 insertions(+), 5 deletions(-)

diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
index a1aba2395..c9087e4ac 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
@@ -270,8 +270,14 @@ public class AppointmentDialog extends Modal<Appointment> {
                }
        }
 
-       public static boolean isOwner(Appointment object) {
-               return object.getOwner() != null && 
getUserId().equals(object.getOwner().getId());
+       public static boolean isOwner(Appointment a) {
+               return a.getOwner() != null && 
getUserId().equals(a.getOwner().getId());
+       }
+
+       public static boolean hasAccess(Appointment a) {
+               return isOwner(a)
+                       || a.getMeetingMembers().stream()
+                                       .anyMatch(m -> 
getUserId().equals(m.getUser().getId()));
        }
 
        private class AppointmentForm extends Form<Appointment> {
@@ -367,7 +373,6 @@ public class AppointmentDialog extends Modal<Appointment> {
 
                @Override
                protected void onInitialize() {
-
                        add(feedback.setOutputMarkupId(true));
                        //General
                        add(ownerPanel.add(owner));
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
index 6a07bdb30..23d52cdb8 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
@@ -228,6 +228,9 @@ public class CalendarPanel extends UserBasePanel {
                                        return;
                                }
                                Appointment a = 
apptDao.get(Long.valueOf(eventId));
+                               if (!AppointmentDialog.hasAccess(a)) {
+                                       return;
+                               }
                                dialog.setModelObjectWithAjaxTarget(a, target);
 
                                dialog.show(target);
diff --git 
a/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestCalendar.java 
b/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestCalendar.java
index 22fc5538a..68cee33af 100644
--- 
a/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestCalendar.java
+++ 
b/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestCalendar.java
@@ -41,8 +41,8 @@ import org.wicketstuff.jquery.ui.calendar7.CalendarView;
 import de.agilecoders.wicket.core.markup.html.bootstrap.navbar.Navbar;
 
 class TestCalendar extends AbstractWicketTesterTest {
-       private static final String PATH_APPOINTMENT_DLG = 
String.format("%s:calendarAppointment", PATH_CHILD);
-       private static final String PATH_APPOINTMENT_DLG_FRM = 
String.format("%s:appForm", PATH_APPOINTMENT_DLG);
+       private static final String PATH_APPOINTMENT_DLG = PATH_CHILD + 
":calendarAppointment";
+       private static final String PATH_APPOINTMENT_DLG_FRM = 
PATH_APPOINTMENT_DLG + ":appForm";
 
        @Test
        void testEventCreate() throws OmException {

Reply via email to