Liferay用のポートレットを開発しようとしています。
現在ログインしているユーザーのユーザー名とパスワード(およびliferayが持っている他のデータ)にアクセスするにはどうすればよいですか?
また、ユーザーがパスワードを変更したときにいくつかのコードを実行できるようにしたいと思います。
getRemoteUser()
オブジェクトを呼び出すことでユーザーIDを取得できPortletRequest
ます。これはJSR-168によって定義されているため、クロスポータル互換です。
IDを取得したら、getUserById()
(Liferay固有のサービス)に電話して追加情報を取得できます。これは、ポートレット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には、管理者(または適切な権限のセットを持つ人)がポータルの特定のユーザーになりすますことができるという概念があります。これにより、ポータルがそのユーザーにどのように見えるかを確認できます。
ユーザーがパスワードを変更したときにコードを実行する場合: 1つのアプローチは、フックプラグインを作成し、UserLocalServiceWrapperクラスを拡張してサービスをオーバーライドすることです。次に、パスワードの変更を確認し、カスタムクラス内でコードを実行します。
お役に立てれば。
または、JavaScriptを使用することもできます。
Liferay.ThemeDisplay.getUserId()
Liferay名前空間には多くの優れた機能があります。十分に文書化されていないAPIを見てください。
また、javascript呼び出しで呼び出すことができるlocalhost:8080 / api/jsonwsで利用可能なWebサービスを見てください。
Liferay.Service(
'/user/get-user-by-id',
{
userId: 10199
},
function(obj) {
console.log(obj);
}
);
Liferayでユーザーを取得する簡単で簡単な方法の1つは、PortalUtil.getUser関数です。
User user = PortalUtil.getUser(portletRequest);