Разрешение всем пользователям выдавать себя за любого пользователя в liferay
У меня есть требование, при котором я должен разрешить всем моим обычным пользователям выдавать себя за пользователя по своему выбору.
Я не смог сделать эту работу. Это то, что я сделал до сих пор:
Добавлены следующие свойства для portal-ext.properties:
portal.jaas.enable=false portal.impersonation.enable=true
Создана роль для целей подражания
- Определенные разрешения для этой новой роли: Портал> Пользователи и организации> Просмотр и олицетворение
- Назначил эту роль пользователю без прав администратора (пользователь A)
Мне не нужно, чтобы мои пользователи видели список пользователей, которых они могут выдать за себя, я просто хочу, чтобы liferay выдал себя за пользователя, если ?doAsUserId=x
присутствует в URL (который работает, если вы являетесь администратором).
Когда я пытаюсь выдать себя за пользователя B, используя пользователя A, ничего не происходит. Я получаю эту ошибку в журнале Tomcat:
1ERROR [http-bio-8180-exec-85][PortalImpl:5990] User 80413 does not have the permission to impersonate 25105
(Пользователь 80413 - это мой пользователь A, который пытается выдать себя за пользователя B [25105])
Я что-то упускаю?
1 ответ
В Lifeary есть условие, которое проверяет разрешение на выдачу себя в списке организаций. Таким образом, пользователь, который выдает себя за другого пользователя, должен иметь разрешение на "подражание" во всей организации, частью которой являются эти пользователи.
if (doAsUser.isDefaultUser() ||
UserPermissionUtil.contains(
permissionChecker, doAsUserId, organizationIds,
ActionKeys.IMPERSONATE)) {
request.setAttribute(WebKeys.USER_ID, new Long(doAsUserId));
return doAsUserId;
}
Таким образом, эти 2 пользователя должны быть частью одной организации и иметь разрешение на олицетворение для этой организации.