Доступ к пользователю из портлета liferay?

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

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

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

4 ответа

Решение

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

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

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. Затем проверьте смену пароля и выполните ваш код внутри вашего пользовательского класса.

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

Или вы можете просто использовать 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);
  }
);

Одним из простых и простых способов получить пользователя в Liferay является функция PortalUtil.getUser.

User user = PortalUtil.getUser(portletRequest);
Другие вопросы по тегам