diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/store/remoteavm.delete.desc.xml b/config/alfresco/templates/webscripts/org/alfresco/repository/store/remoteavm.delete.desc.xml
index 0c4b8bc9f6..0632f5cb2c 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/repository/store/remoteavm.delete.desc.xml
+++ b/config/alfresco/templates/webscripts/org/alfresco/repository/store/remoteavm.delete.desc.xml
@@ -2,6 +2,6 @@
Remote AVM Store
Remote service mirroring the Store interface - to an AVM store
/remotestore/{method}/{path}
- admin
+ user
argument
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/store/remoteavm.get.desc.xml b/config/alfresco/templates/webscripts/org/alfresco/repository/store/remoteavm.get.desc.xml
index a59d22a59d..6a2a6ebb31 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/repository/store/remoteavm.get.desc.xml
+++ b/config/alfresco/templates/webscripts/org/alfresco/repository/store/remoteavm.get.desc.xml
@@ -3,6 +3,6 @@
Remote service mirroring the Store interface - to an AVM store
/remotestore/{method}
/remotestore/{method}/{path}
- admin
+ none
argument
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/store/remoteavm.post.desc.xml b/config/alfresco/templates/webscripts/org/alfresco/repository/store/remoteavm.post.desc.xml
index 0c4b8bc9f6..0632f5cb2c 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/repository/store/remoteavm.post.desc.xml
+++ b/config/alfresco/templates/webscripts/org/alfresco/repository/store/remoteavm.post.desc.xml
@@ -2,6 +2,6 @@
Remote AVM Store
Remote service mirroring the Store interface - to an AVM store
/remotestore/{method}/{path}
- admin
+ user
argument
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/webframework/metadata.get.desc.xml b/config/alfresco/templates/webscripts/org/alfresco/webframework/metadata.get.desc.xml
index 97aada2978..668a763c6f 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/webframework/metadata.get.desc.xml
+++ b/config/alfresco/templates/webscripts/org/alfresco/webframework/metadata.get.desc.xml
@@ -3,6 +3,6 @@
Content Metadata Retrieval Service
/webframework/content/metadata
argument
- admin
+ user
required
-
+
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/webframework/metadata.get.html.ftl b/config/alfresco/templates/webscripts/org/alfresco/webframework/metadata.get.html.ftl
index a4a48cfe12..4ded0e3344 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/webframework/metadata.get.html.ftl
+++ b/config/alfresco/templates/webscripts/org/alfresco/webframework/metadata.get.html.ftl
@@ -55,11 +55,9 @@
<#assign renderable = false>
<#if val?is_string == true>
<#assign renderable = true>
- #if>
- <#if val?is_date == true>
+ <#elseif val?is_date == true>
<#assign renderable = true>
- #if>
- <#if val?is_boolean == true>
+ <#elseif val?is_boolean == true>
<#assign renderable = true>
#if>
<#if renderable == true>
@@ -67,12 +65,10 @@
,
#if>
<#if val?is_string == true>
- "${key}" : "${val}"
- #if>
- <#if val?is_date == true>
+ "${key}" : "${val?js_string}"
+ <#elseif val?is_date == true>
"${key}" : "${val?datetime}"
- #if>
- <#if val?is_boolean == true>
+ <#elseif val?is_boolean == true>
"${key}" : "${val}"
#if>
<#assign first = false>
diff --git a/config/alfresco/templates/webscripts/org/alfresco/webframework/metadata.get.js b/config/alfresco/templates/webscripts/org/alfresco/webframework/metadata.get.js
index d05e35ef2f..8c05f25585 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/webframework/metadata.get.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/webframework/metadata.get.js
@@ -7,21 +7,28 @@ if(args["id"] != null)
object = search.findNode(id);
}
-// if not by id, then allow for user id
-if(object == null && args["user"] != null)
+// if not by id, then allow for user id - but only if current user is the user!
+else if(args["user"] != null)
{
var userId = args["user"];
- object = people.getPerson(userId);
+ if (userId == person.properties.userName)
+ {
+ object = person;
+ }
}
// load content by relative path
-if(object == null)
+else
{
var path = args["path"];
if(path == null || path == "" || path == "/")
+ {
path = "/Company Home";
+ }
else
+ {
path = "/Company Home" + path;
+ }
// look up the content by path
object = roothome.childByNamePath(path);
diff --git a/source/java/org/alfresco/repo/web/scripts/bean/AVMRemoteStore.java b/source/java/org/alfresco/repo/web/scripts/bean/AVMRemoteStore.java
index a019b6ceb3..ba6f0ff119 100644
--- a/source/java/org/alfresco/repo/web/scripts/bean/AVMRemoteStore.java
+++ b/source/java/org/alfresco/repo/web/scripts/bean/AVMRemoteStore.java
@@ -32,6 +32,8 @@ import java.util.SortedMap;
import org.alfresco.repo.avm.AVMNodeConverter;
import org.alfresco.repo.content.MimetypeMap;
+import org.alfresco.repo.security.authentication.AuthenticationUtil;
+import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
import org.alfresco.repo.security.permissions.AccessDeniedException;
import org.alfresco.service.cmr.avm.AVMExistsException;
import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
@@ -104,77 +106,85 @@ public class AVMRemoteStore extends BaseRemoteStore
* @see org.alfresco.repo.web.scripts.bean.BaseRemoteStore#getDocument(org.alfresco.web.scripts.WebScriptResponse, java.lang.String)
*/
@Override
- protected void getDocument(WebScriptResponse res, String path) throws IOException
+ protected void getDocument(final WebScriptResponse res, final String path) throws IOException
{
- String avmPath = buildAVMPath(path);
- AVMNodeDescriptor desc = this.avmService.lookup(-1, avmPath);
+ final String avmPath = buildAVMPath(path);
+ final AVMNodeDescriptor desc = this.avmService.lookup(-1, avmPath);
if (desc == null)
{
res.setStatus(Status.STATUS_NOT_FOUND);
return;
}
- ContentReader reader;
- try
+ AuthenticationUtil.runAs(new RunAsWork