Доступ к пользователю из портлета liferay? - PullRequest
15 голосов
/ 09 июня 2009

Я пытаюсь разработать портлет для liferay.

Как я могу получить доступ к имени пользователя и паролю (и другим данным liferay) пользователя, который в данный момент вошел в систему?

Я также хотел бы иметь возможность выполнять некоторый код, когда пользователи меняют свой пароль.

Ответы [ 4 ]

15 голосов
/ 10 июня 2009

Вы можете получить идентификатор пользователя, вызвав getRemoteUser() в объекте PortletRequest. Это определено JSR-168, поэтому оно кросс-портально совместимо.

Получив идентификатор, вы можете получить дополнительную информацию, позвонив по номеру getUserById() (услуга, специфичная для Liferay). На это не распространяется спецификация Portlet API, поэтому он привязывает вас к Liferay.

14 голосов
/ 15 марта 2012

Liferay Специфические вещи, вот пример кода, который будет написан в вашем классе портлета для извлечения пользователя:

ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(WebKeys.THEME_DISPLAY);

User user = themeDisplay.getRealUser(); // it gives you the actual Logged in User
//you can also use
// User user = themeDisplay.getUser(); // this would fetch the User you are impersonating 

long userId = user.getUserId();
String userName = user.getEmailAddress();

В качестве альтернативы;

long userId = themeDisplay.getRealUserId(); // themeDisplay.getUserId();
User user = UserLocalServiceUtil.getUser(userId);

Олицетворение пользователя:

Liferay имеет концепцию, согласно которой администраторы (или лица с правильным набором разрешений) могут выдавать себя за конкретного пользователя портала. Благодаря этому они могут видеть, как портал выглядит для этого пользователя.

Для выполнения кода, когда пользователь меняет свои пароли: Один из подходов заключается в создании подключаемого модуля и переопределении служб путем расширения класса UserLocalServiceWrapper. Затем проверьте смену пароля и выполните свой код внутри своего пользовательского класса.

Надеюсь, это поможет.

1 голос
/ 29 февраля 2016

Или вы можете просто использовать JavaScript:

Liferay.ThemeDisplay.getUserId()

В пространстве имен Liferay есть много приятного, взгляните на не очень хорошо документированный API:

Кроме того, взгляните на веб-сервисы, доступные под localhost: 8080 / api / jsonws, которые вы можете вызвать с помощью вызова javascript:

Liferay.Service(
  '/user/get-user-by-id',
  {
    userId: 10199
  },
  function(obj) {
    console.log(obj);
  }
);
0 голосов
/ 04 марта 2016

Один простой и легкий способ получить пользователя в Liferay - это функция PortalUtil.getUser .

User user = PortalUtil.getUser(portletRequest);
...