Разрешение всем пользователям выдавать себя за любого пользователя в liferay

У меня есть требование, при котором я должен разрешить всем моим обычным пользователям выдавать себя за пользователя по своему выбору.

Я не смог сделать эту работу. Это то, что я сделал до сих пор:

  1. Добавлены следующие свойства для portal-ext.properties:

    portal.jaas.enable=false
    portal.impersonation.enable=true
    
  2. Создана роль для целей подражания

  3. Определенные разрешения для этой новой роли: Портал> Пользователи и организации> Просмотр и олицетворение
  4. Назначил эту роль пользователю без прав администратора (пользователь 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 пользователя должны быть частью одной организации и иметь разрешение на олицетворение для этой организации.

Другие вопросы по тегам