diff --git a/src/main/java/org/olat/commons/calendar/restapi/UserCalendarWebService.java b/src/main/java/org/olat/commons/calendar/restapi/UserCalendarWebService.java index 5fea001d09a0ab5cf9c8cae4a59558e39f3cc519..b7ee11f77321164c09bb3ed5a146e6076f5c5773 100644 --- a/src/main/java/org/olat/commons/calendar/restapi/UserCalendarWebService.java +++ b/src/main/java/org/olat/commons/calendar/restapi/UserCalendarWebService.java @@ -23,10 +23,10 @@ import static org.olat.commons.calendar.restapi.CalendarWSHelper.hasReadAccess; import static org.olat.commons.calendar.restapi.CalendarWSHelper.hasWriteAccess; import static org.olat.commons.calendar.restapi.CalendarWSHelper.processEvents; import static org.olat.restapi.security.RestSecurityHelper.getUserRequest; +import static org.olat.restapi.security.RestSecurityHelper.isAdmin; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.List; import javax.servlet.http.HttpServletRequest; @@ -44,7 +44,6 @@ import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; import org.olat.basesecurity.BaseSecurityManager; -import org.olat.basesecurity.IdentityShort; import org.olat.collaboration.CollaborationManager; import org.olat.collaboration.CollaborationTools; import org.olat.commons.calendar.CalendarManager; @@ -93,9 +92,9 @@ public class UserCalendarWebService { @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public Response getCalendars(@PathParam("identityKey") Long identityKey, @Context HttpServletRequest httpRequest) { UserRequest ureq = getUserRequest(httpRequest); - if(!ureq.getUserSession().isAuthenticated()) { + if(ureq.getIdentity() == null || !ureq.getUserSession().isAuthenticated()) { return Response.serverError().status(Status.UNAUTHORIZED).build(); - } else if (ureq.getIdentity() == null || !ureq.getIdentity().getKey().equals(identityKey)) { + } else if (!ureq.getIdentity().getKey().equals(identityKey) && !isAdmin(httpRequest)) { return Response.serverError().status(Status.UNAUTHORIZED).build(); } @@ -116,9 +115,9 @@ public class UserCalendarWebService { @PathParam("identityKey") Long identityKey, @Context HttpServletRequest httpRequest) { UserRequest ureq = getUserRequest(httpRequest); - if(!ureq.getUserSession().isAuthenticated()) { + if(ureq.getIdentity() == null || !ureq.getUserSession().isAuthenticated()) { throw new WebApplicationException(Response.serverError().status(Status.UNAUTHORIZED).build()); - } else if (ureq.getIdentity() == null || !ureq.getIdentity().getKey().equals(identityKey)) { + } else if (!ureq.getIdentity().getKey().equals(identityKey) && !isAdmin(httpRequest)) { throw new WebApplicationException(Response.serverError().status(Status.UNAUTHORIZED).build()); } @@ -142,9 +141,9 @@ public class UserCalendarWebService { @Context HttpServletRequest httpRequest, @Context Request request) { UserRequest ureq = getUserRequest(httpRequest); - if(!ureq.getUserSession().isAuthenticated()) { + if(ureq.getIdentity() == null || !ureq.getUserSession().isAuthenticated()) { return Response.serverError().status(Status.UNAUTHORIZED).build(); - } else if (ureq.getIdentity() == null || !ureq.getIdentity().getKey().equals(identityKey)) { + } else if (!ureq.getIdentity().getKey().equals(identityKey) && !isAdmin(httpRequest)) { return Response.serverError().status(Status.UNAUTHORIZED).build(); } @@ -195,25 +194,27 @@ public class UserCalendarWebService { UserCourseEnvironment userCourseEnv = new UserCourseEnvironmentImpl(ienv, course.getCourseEnvironment()); wrapper = CourseCalendars.getCourseCalendarWrapper(ureq, userCourseEnv, null); } else if("user".equals(type) && calendarModule.isEnablePersonalCalendar()) { - List<String> identityName = Collections.singletonList(id); - List<IdentityShort> shorts = BaseSecurityManager.getInstance().findShortIdentitiesByName(identityName); - if(shorts.size() == 1 && shorts.get(0).getKey().equals(ureq.getIdentity().getKey())) { + if(id.equals(ureq.getIdentity().getName())) { wrapper = getPersonalCalendar(ureq.getIdentity()); + } else if(isAdmin(ureq.getHttpReq())) { + Identity identity = BaseSecurityManager.getInstance().findIdentityByName(id); + wrapper = getPersonalCalendar(identity); } } return wrapper; } private KalendarRenderWrapper getPersonalCalendar(Identity identity) { - // get the personal calendar - CalendarManager calendarManager = CoreSpringFactory.getImpl(CalendarManager.class); - KalendarRenderWrapper calendarWrapper = calendarManager.getPersonalCalendar(identity); - calendarWrapper.setAccess(KalendarRenderWrapper.ACCESS_READ_WRITE); - CalendarUserConfiguration config = calendarManager.findCalendarConfigForIdentity(calendarWrapper.getKalendar(), identity); - if (config != null) { - calendarWrapper.setConfiguration(config); - } - return calendarWrapper; + // get the personal calendar + CalendarManager calendarManager = CoreSpringFactory.getImpl(CalendarManager.class); + KalendarRenderWrapper calendarWrapper = calendarManager.getPersonalCalendar(identity); + calendarWrapper.setAccess(KalendarRenderWrapper.ACCESS_READ_WRITE); + calendarWrapper.setPrivateEventsVisible(true); + CalendarUserConfiguration config = calendarManager.findCalendarConfigForIdentity(calendarWrapper.getKalendar(), identity); + if (config != null) { + calendarWrapper.setConfiguration(config); + } + return calendarWrapper; } private void getCalendars(CalendarVisitor calVisitor, UserRequest ureq) { diff --git a/src/main/java/org/olat/restapi/repository/course/CoursesWebService.java b/src/main/java/org/olat/restapi/repository/course/CoursesWebService.java index 6ce90101bd359cb19163f72c5d8c0d7c0b98a2fb..b94462ac8929843d3e9c6e0b979dc2db5b1748c1 100644 --- a/src/main/java/org/olat/restapi/repository/course/CoursesWebService.java +++ b/src/main/java/org/olat/restapi/repository/course/CoursesWebService.java @@ -199,7 +199,9 @@ public class CoursesWebService { @Path("{courseId}") public CourseWebService getCourse(@PathParam("courseId") Long courseId) { ICourse course = loadCourse(courseId); - if(course == null) return null; + if(course == null) { + return null; + } OLATResource ores = course.getCourseEnvironment().getCourseGroupManager().getCourseResource(); return new CourseWebService(ores, course); }