Доступ к пользователю из портлета 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:
- https://www.liferay.com/community/wiki/-/wiki/Main/Liferay+JavaScript+API
- https://www.liferay.com/web/pankaj.kathiriya/blog/-/blogs/usage-of-liferay-js-object
Также взгляните на веб-сервисы, доступные по адресу 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);