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

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

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

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


person Joshua    schedule 09.06.2009    source источник


Ответы (4)


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

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

person Jaromir Hamala    schedule 10.06.2009
comment
Специальная служба Liferay — UserServiceUtil. - person frandevel; 31.10.2011
comment
Технически вы можете оставаться более независимым от портала, используя portletRequest.getAttribute(PortletRequest.USER_INFO). Это возвращает карту пользовательских атрибутов, которые могут быть определены каждой реализацией портала. См. portlet-custom.xml и com.liferay.portlet.UserAttributes пользовательские атрибуты Liferay. По большей части имена пользовательских атрибутов рекомендованы спецификацией портлета. - person p.mesotten; 12.02.2013

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

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

person Prakash K    schedule 15.03.2012

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

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

User user = PortalUtil.getUser(portletRequest);
person Pater Zeo    schedule 04.03.2016