在Alfresco中找到用户的最爱

时间:2016-05-20 08:02:47

标签: alfresco alfresco-webscripts

我正在使用Alfresco 4.2并试图找到一些用户的收藏夹,但我正在使用的webscript仅返回当前用户的结果。我确信,我正在调查的用户存在。

我该怎么办?我做错了什么?

这是有效的webscript调用:

domain.com/alfresco/api/-default-/public/alfresco/versions/1/people/-me-/favorites

这是不起作用的那个:

domain.com/alfresco/api/-default-/public/alfresco/versions/1/people/user@tenant.com/favorites

并返回以下内容:

{"error":{"statusCode":404,"briefSummary":"04203980 The entity with id: user@tenant.com was not found","stackTrace":"[org.alfresco.rest.api.impl.PeopleImpl.validatePerson(PeopleImpl.java:155)

BTW,/favorite-sites代替/favorites适用于所有人。

1 个答案:

答案 0 :(得分:2)

404是误导性的。尝试将URL与不存在的用户一起使用。这也将返回404,但错误会有所不同。访问现有用户

The entity with id: existinguser was not found

而不存在的用户提供

The entity with id: personId is null. was not found

如果您尝试获取其他用户的收藏,则HTTP响应状态应为403。

您无法访问其他用户收藏夹,因为类org.alfresco.rest.api.impl.PeopleImpl会检查主叫用户是否与请求收藏的用户相同。在Alfresco 5.0d中,relvant代码是:

public String validatePerson(String personId, boolean validateIsCurrentUser)
{
    if(personId.equalsIgnoreCase(DEFAULT_USER))
    {
        personId = AuthenticationUtil.getFullyAuthenticatedUser();
    }

    personId = personService.getUserIdentifier(personId);
    if(personId == null)
    {
        // "User " + personId + " does not exist"
        throw new EntityNotFoundException("personId is null.");
    }

    if(validateIsCurrentUser)
    {
        String currentUserId = AuthenticationUtil.getFullyAuthenticatedUser();
        if(!currentUserId.equalsIgnoreCase(personId))
        {
            throw new EntityNotFoundException(personId);
        }
    }

    return personId;
}