ログインユーザー情報の確認 - 開発者向けのニッチな機能

## はじめに
Yellowfin コンテンツを開発する際、ログインユーザーを切り替えながら、各ユーザーに適した[アクセスフィルター]( https://wiki.yellowfin.co.jp/pages/viewpage.action?pageId=6589428)が設定されているか否かなど、確認しながら開発することも多いですよね。
そんな時に便利な Java API が追加されました。

## 取得できる情報
integration 名前空間の下から、ログインユーザー情報を取得できるメソッドを呼び出すことができます。
具体的には、以下のような情報を返すメソッドがそろっています。

|取得できる情報|
|---|
|ログインの有無|
|氏名|
|ロール|
|クライアント組織|
|クライアント参照ID|
|OS種類|
|カスタムパラメーター|
|利用可能なツールバー|
|国・地域|
|ゲストユーザーでアクセス|

## サンプルコード
サンプルコードを介して説明します。

下記サンプルコードでは、ブラウザからログインしているユーザーがいれば、ログインユーザーの情報を表示します。
ログインユーザーがいなければ、ログインしていない旨が表示されます。
取得できる情報の詳細は、後ほど動作を確認しながら説明します。

```jsp:loginUserInfo.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ page import="com.hof.api.integration.IntegrationAPI"%>
<%@ page import="com.hof.api.integration.IntegrationInfo"%>
<%@ page import="com.hof.util.*, java.util.*, java.text.*" %> 
<%@ page import="com.hof.web.form.*" %>
<%@ page import="com.hof.mi.web.service.*" %>
<% IntegrationInfo info = new IntegrationAPI().getIntegrationInfo(); %>

<H1>ログインユーザー情報 (バージョン <%= info.getVersion() %>)</H1>
<% if (info.isLoggedOn()) { %>
<BR>氏名: <%= info.getSessionInfo().getPerson().getFullName() %>
<BR>ロール: <%= info.getSessionInfo().getPerson().getRoleName() %>
<BR>組織: <%= info.getSessionInfo().getOrg().getOrgName() %>
<BR>クライアント組織参照ID: <%= info.getSessionInfo().getOrg().getOrgRefId() %>
<BR>OS: <%= info.getBrowserInfo().getOperatingSystem() %>
<BR>ツールバーオプション: <%= info.getToolbar().getTopLevelEntities() %>
<BR>国・地域: <%= info.getLocale().getDisplayCountry() %>
<BR>ゲストユーザー: <%= info.isLoggedOnAsGuest() %>
<% } else { %>
<BR> ログインしていません
<% } %>
```

## 動作確認
先のサンプル loginUserInfo.jsp を (yellowfin)/appserver/webapps/ROOT/ 配下に置いて動作を確認します。

Windows 11 の Chrome から、Yellowfin (http://yellowfin-server:9140) に下記ユーザーでログインします。

|Yellowfin 設定項目|設定値|
|---|---|
|姓|トビー|
|名|ロバーツ|
|ロール|Consumer & Collaborator|
|優先言語|English (United Kingdom)|
|クライアント組織|ボルダー＆リード (001)|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/d8c531b1-9a6b-00f4-6e00-f189aabe1eb7.png)

Yellowfin にログイン中のChrome に新規でタブを開き、http://yellowfin-server:9140/loginUserInfo.jsp にアクセスすると、下記のような情報が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/beeb2347-41a1-a7f1-37f1-5559b651ca46.png)

おおよそどのような情報が取得されているかは、ブラウザの表示内容を見れば分かるかと思いますが、念のため各メソッドが表示する情報は以下の通りです。

|メソッド|情報|
|---|---|
|getFullName()|プロファイルの姓名|
|getRoleName()|割り当てられたロール|
|getOrgName()|ログイン先のクライアント組織|
|getOrgRefId()|ログイン先のクライアント参照ID|
|getOperatingSystem()|使用中のOS|
|getTopLevelEntities()|使用可能なツールバー|
|getDisplayCountry()|優先言語内に含まれる国・地域|
|isLoggedOnAsGuest()|ゲストユーザーか否か|

今度は、Firefox から[ゲストユーザー](https://wiki.yellowfin.co.jp/pages/viewpage.action?pageId=2293955)で、Yellowfin のコンテンツにアクセスします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/c0b3f9b0-9b64-1bac-c3d6-47b13307ec8c.png)

ゲストユーザーはログイン無してコンテンツにアクセスするため、ログインユーザーに関する情報は、一様に Guest となります。
一方で、isLoggedOnAsGuest() メソッドが true を返します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/7dc1337d-08e1-cae5-9e40-e757cdc2f025.png)

## 最後に
開発時に、ブラウザを複数種類上げて、ユーザーを切り替えながら動作確認をするようなこともあるかと思います。そんな時、どのユーザーでアクセスしているかを簡易的に確認できる機能として活用いただけるかと思います。
具体的な用途としては、現状では開発環境での動作確認などが想定されます。

では皆様、良いデータ分析を‼