Skip to content
Snippets Groups Projects
Commit 3e3322d5 authored by srosse's avatar srosse
Browse files

CL-431: enhance calendar API for administrator

parent d27ea6f9
No related branches found
No related tags found
No related merge requests found
...@@ -23,10 +23,10 @@ import static org.olat.commons.calendar.restapi.CalendarWSHelper.hasReadAccess; ...@@ -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.hasWriteAccess;
import static org.olat.commons.calendar.restapi.CalendarWSHelper.processEvents; import static org.olat.commons.calendar.restapi.CalendarWSHelper.processEvents;
import static org.olat.restapi.security.RestSecurityHelper.getUserRequest; import static org.olat.restapi.security.RestSecurityHelper.getUserRequest;
import static org.olat.restapi.security.RestSecurityHelper.isAdmin;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Collections;
import java.util.List; import java.util.List;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
...@@ -44,7 +44,6 @@ import javax.ws.rs.core.Response; ...@@ -44,7 +44,6 @@ import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status; import javax.ws.rs.core.Response.Status;
import org.olat.basesecurity.BaseSecurityManager; import org.olat.basesecurity.BaseSecurityManager;
import org.olat.basesecurity.IdentityShort;
import org.olat.collaboration.CollaborationManager; import org.olat.collaboration.CollaborationManager;
import org.olat.collaboration.CollaborationTools; import org.olat.collaboration.CollaborationTools;
import org.olat.commons.calendar.CalendarManager; import org.olat.commons.calendar.CalendarManager;
...@@ -93,9 +92,9 @@ public class UserCalendarWebService { ...@@ -93,9 +92,9 @@ public class UserCalendarWebService {
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response getCalendars(@PathParam("identityKey") Long identityKey, @Context HttpServletRequest httpRequest) { public Response getCalendars(@PathParam("identityKey") Long identityKey, @Context HttpServletRequest httpRequest) {
UserRequest ureq = getUserRequest(httpRequest); UserRequest ureq = getUserRequest(httpRequest);
if(!ureq.getUserSession().isAuthenticated()) { if(ureq.getIdentity() == null || !ureq.getUserSession().isAuthenticated()) {
return Response.serverError().status(Status.UNAUTHORIZED).build(); 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(); return Response.serverError().status(Status.UNAUTHORIZED).build();
} }
...@@ -116,9 +115,9 @@ public class UserCalendarWebService { ...@@ -116,9 +115,9 @@ public class UserCalendarWebService {
@PathParam("identityKey") Long identityKey, @Context HttpServletRequest httpRequest) { @PathParam("identityKey") Long identityKey, @Context HttpServletRequest httpRequest) {
UserRequest ureq = getUserRequest(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()); 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()); throw new WebApplicationException(Response.serverError().status(Status.UNAUTHORIZED).build());
} }
...@@ -142,9 +141,9 @@ public class UserCalendarWebService { ...@@ -142,9 +141,9 @@ public class UserCalendarWebService {
@Context HttpServletRequest httpRequest, @Context Request request) { @Context HttpServletRequest httpRequest, @Context Request request) {
UserRequest ureq = getUserRequest(httpRequest); UserRequest ureq = getUserRequest(httpRequest);
if(!ureq.getUserSession().isAuthenticated()) { if(ureq.getIdentity() == null || !ureq.getUserSession().isAuthenticated()) {
return Response.serverError().status(Status.UNAUTHORIZED).build(); 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(); return Response.serverError().status(Status.UNAUTHORIZED).build();
} }
...@@ -195,25 +194,27 @@ public class UserCalendarWebService { ...@@ -195,25 +194,27 @@ public class UserCalendarWebService {
UserCourseEnvironment userCourseEnv = new UserCourseEnvironmentImpl(ienv, course.getCourseEnvironment()); UserCourseEnvironment userCourseEnv = new UserCourseEnvironmentImpl(ienv, course.getCourseEnvironment());
wrapper = CourseCalendars.getCourseCalendarWrapper(ureq, userCourseEnv, null); wrapper = CourseCalendars.getCourseCalendarWrapper(ureq, userCourseEnv, null);
} else if("user".equals(type) && calendarModule.isEnablePersonalCalendar()) { } else if("user".equals(type) && calendarModule.isEnablePersonalCalendar()) {
List<String> identityName = Collections.singletonList(id); if(id.equals(ureq.getIdentity().getName())) {
List<IdentityShort> shorts = BaseSecurityManager.getInstance().findShortIdentitiesByName(identityName);
if(shorts.size() == 1 && shorts.get(0).getKey().equals(ureq.getIdentity().getKey())) {
wrapper = getPersonalCalendar(ureq.getIdentity()); wrapper = getPersonalCalendar(ureq.getIdentity());
} else if(isAdmin(ureq.getHttpReq())) {
Identity identity = BaseSecurityManager.getInstance().findIdentityByName(id);
wrapper = getPersonalCalendar(identity);
} }
} }
return wrapper; return wrapper;
} }
private KalendarRenderWrapper getPersonalCalendar(Identity identity) { private KalendarRenderWrapper getPersonalCalendar(Identity identity) {
// get the personal calendar // get the personal calendar
CalendarManager calendarManager = CoreSpringFactory.getImpl(CalendarManager.class); CalendarManager calendarManager = CoreSpringFactory.getImpl(CalendarManager.class);
KalendarRenderWrapper calendarWrapper = calendarManager.getPersonalCalendar(identity); KalendarRenderWrapper calendarWrapper = calendarManager.getPersonalCalendar(identity);
calendarWrapper.setAccess(KalendarRenderWrapper.ACCESS_READ_WRITE); calendarWrapper.setAccess(KalendarRenderWrapper.ACCESS_READ_WRITE);
CalendarUserConfiguration config = calendarManager.findCalendarConfigForIdentity(calendarWrapper.getKalendar(), identity); calendarWrapper.setPrivateEventsVisible(true);
if (config != null) { CalendarUserConfiguration config = calendarManager.findCalendarConfigForIdentity(calendarWrapper.getKalendar(), identity);
calendarWrapper.setConfiguration(config); if (config != null) {
} calendarWrapper.setConfiguration(config);
return calendarWrapper; }
return calendarWrapper;
} }
private void getCalendars(CalendarVisitor calVisitor, UserRequest ureq) { private void getCalendars(CalendarVisitor calVisitor, UserRequest ureq) {
......
...@@ -199,7 +199,9 @@ public class CoursesWebService { ...@@ -199,7 +199,9 @@ public class CoursesWebService {
@Path("{courseId}") @Path("{courseId}")
public CourseWebService getCourse(@PathParam("courseId") Long courseId) { public CourseWebService getCourse(@PathParam("courseId") Long courseId) {
ICourse course = loadCourse(courseId); ICourse course = loadCourse(courseId);
if(course == null) return null; if(course == null) {
return null;
}
OLATResource ores = course.getCourseEnvironment().getCourseGroupManager().getCourseResource(); OLATResource ores = course.getCourseEnvironment().getCourseGroupManager().getCourseResource();
return new CourseWebService(ores, course); return new CourseWebService(ores, course);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment