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

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

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

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

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

  3. Определенные разрешения для этой новой роли: Портал > Пользователи и организации > Просмотр и олицетворение
  4. Назначил эту роль пользователю, не являющемуся администратором (пользователь А)

Мне не нужно, чтобы мои пользователи видели список пользователей, которых они могут олицетворять, я просто хочу, чтобы liferay олицетворял пользователя, если в URL-адресе присутствует ?doAsUserId=x (что работает, если вы являетесь администратором).

Когда я пытаюсь выдать себя за пользователя 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])

Я пропустил что-то еще?


person mduck    schedule 16.06.2014    source источник


Ответы (1)


В Lifeary есть условие, которое проверяет наличие разрешения в списке организаций на олицетворение. Таким образом, пользователь, который выдает себя за другого пользователя, должен иметь разрешение на «выдачу себя за другое лицо» во всех организациях, частью которых являются эти пользователи.

if (doAsUser.isDefaultUser() ||
        UserPermissionUtil.contains(
            permissionChecker, doAsUserId, organizationIds,
            ActionKeys.IMPERSONATE)) {

        request.setAttribute(WebKeys.USER_ID, new Long(doAsUserId));

        return doAsUserId;
    }

Таким образом, эти 2 пользователя должны быть частью одной организации и должны иметь разрешение на олицетворение для этой организации.

person Felix Christy    schedule 17.06.2014