ログインしているユーザーに対して、組み込みの「サインイン」ポートレットを非表示にしたいと考えています。
これを達成するためのアクセス許可を設定するにはどうすればよいですか?
Liferay は RBAC パーミッション モデルを使用しますが、おそらくパーミッションを通じてこれを達成することはできません。これは、ゲストに付与されたアクセス許可からシステム ロールを奪うことはまったく非論理的だからです。
私の頭の上から、いくつかの他のオプションを検討してください。
これを実現するもう 1 つの方法は、Login ポートレットを含む公開ページを作成することです。このページを Login と呼びます (このページとそのポートレットはゲストが表示できる必要があります)。
次に、別のページを作成し、これを Welcome と呼びます。ログインしたユーザーが見られるように、いくつかのポートレットを配置します。ページはできれば非公開にする必要がありますが、公開する場合は、ゲストがポートレットなどを表示できないように権限を変更してください。
次に、[コントロール パネル] > [ポータル] > [ポータル設定] に移動し、ナビゲーション リンクを変更します (疑問符アイコンにカーソルを合わせると、各リンクの機能を説明する有益なツールチップが表示されます)。
上記のログイン ページとウェルカム ページの続きの例を次に示します。
シンプル!コードの変更やカスタム テーマはありません。
Liferayは、サインインしたクラスを<body>
要素に追加します。HTMLで利用できるが、表示されていない場合は、次を追加します。
.signed-in .portlet_login {
display:none;
}
または、テーマまたはログインポートレットのルックアンドフィールの高度なスタイリングに類似しています。
$is_signed_in
チェックインに基づいて、多くのものをレンダリングする/レンダリングしないことができますTheme VM files
。
is_signed_in
true
ログインしているユーザーとそれ以外のユーザー向けになりfalse
ます。
いくつかの例は以下からportal_vm.vm
#if(!$is_signed_in)
<a href="$sign_in_url" id="sign-in" rel="nofollow">$sign_in_text</a>
#end
#if($is_signed_in)
#if($permissionChecker.isOmniadmin()== true)
#dockbar()
#end
#if(!$is_signed_in)
$theme.include($themeServletContext, "/jsp/someJsp.jsp")
#end