diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/event.get.json.ftl b/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/event.get.json.ftl index 5bba5c878a..60f7681fda 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/event.get.json.ftl +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/event.get.json.ftl @@ -22,7 +22,13 @@ "docfolder": "${result.docfolder}", "recurrence": "${result.recurrence}", - "isoutlook": "${result.isoutlook?string}" + "isoutlook": "${result.isoutlook?string}", + + "permissions": + { + "edit": ${result.canEdit?string}, + "delete": ${result.canDelete?string} + } } diff --git a/config/alfresco/web-scripts-application-context.xml b/config/alfresco/web-scripts-application-context.xml index 8b91128430..8e2e442292 100644 --- a/config/alfresco/web-scripts-application-context.xml +++ b/config/alfresco/web-scripts-application-context.xml @@ -1722,6 +1722,7 @@ + diff --git a/source/java/org/alfresco/repo/web/scripts/calendar/CalendarEntryGet.java b/source/java/org/alfresco/repo/web/scripts/calendar/CalendarEntryGet.java index 6430970a71..2d6c79a4aa 100644 --- a/source/java/org/alfresco/repo/web/scripts/calendar/CalendarEntryGet.java +++ b/source/java/org/alfresco/repo/web/scripts/calendar/CalendarEntryGet.java @@ -26,6 +26,8 @@ import java.util.Map; import org.alfresco.service.cmr.calendar.CalendarEntry; import org.alfresco.service.cmr.calendar.CalendarEntryDTO; import org.alfresco.service.cmr.calendar.CalendarRecurrenceHelper; +import org.alfresco.service.cmr.security.AccessStatus; +import org.alfresco.service.cmr.security.PermissionService; import org.alfresco.service.cmr.site.SiteInfo; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -44,6 +46,7 @@ import org.springframework.extensions.webscripts.WebScriptRequest; public class CalendarEntryGet extends AbstractCalendarWebScript { private static Log logger = LogFactory.getLog(CalendarEntryGet.class); + private PermissionService permissionService; @Override protected Map executeImpl(SiteInfo site, String eventName, @@ -81,6 +84,12 @@ public class CalendarEntryGet extends AbstractCalendarWebScript } } + // Check the permissions the user has on the entry + AccessStatus canEdit = permissionService.hasPermission(entry.getNodeRef(), PermissionService.WRITE); + AccessStatus canDelete = permissionService.hasPermission(entry.getNodeRef(), PermissionService.DELETE); + result.put("canEdit", (canEdit == AccessStatus.ALLOWED)); + result.put("canDelete", (canDelete == AccessStatus.ALLOWED)); + // All done Map model = new HashMap(); model.put("result", result); @@ -208,4 +217,9 @@ public class CalendarEntryGet extends AbstractCalendarWebScript // All done return text.toString(); } + + public void setPermissionService(PermissionService permissionService) + { + this.permissionService = permissionService; + } } diff --git a/source/java/org/alfresco/repo/web/scripts/calendar/CalendarRestApiTest.java b/source/java/org/alfresco/repo/web/scripts/calendar/CalendarRestApiTest.java index c28b61f83f..f368872c8d 100644 --- a/source/java/org/alfresco/repo/web/scripts/calendar/CalendarRestApiTest.java +++ b/source/java/org/alfresco/repo/web/scripts/calendar/CalendarRestApiTest.java @@ -413,6 +413,12 @@ public class CalendarRestApiTest extends BaseWebScriptTest assertEquals("6/29/2011", entry.getJSONObject("endAt").get("legacyDate")); assertEquals("13:00", entry.getJSONObject("endAt").get("legacyTime")); + // Check the permissions on it + assertEquals(true, entry.has("permissions")); + JSONObject permissions = entry.getJSONObject("permissions"); + assertEquals(true, permissions.getBoolean("edit")); + assertEquals(true, permissions.getBoolean("delete")); + // Edit entry = updateEntry(name, EVENT_TITLE_ONE, "More Where", "More Thing", false, Status.STATUS_OK);