Yellowfinのクライアント組織に属している人向けのJSAPIv3でのダッシュボード表示
概要
件名の通りなのですが、CORS設定を行いwebserver越しにRESTでYellowfinサーバーにアクセスするで試してみたとおり、デフォルト組織に属するユーザーに関しては問題なく表示できるのですが、人によってクライアント組織を分けていて、その人に向けて表示する内容を変えたいといった場合に使える方法を検証した結果、無事に表示できたのでそのメモを残そうと思います。
前提
・管理者ユーザーとアクセスユーザーが存在する。この場合管理者ユーザー([email protected])、アクセスユーザー([email protected])。
・アクセスユーザーはtest1というクライアント組織に属している(参照IDもつける)。
・今回の場合はSSOを有効にしているため、リポジトリに対してSQLを発行済です。
サンプルコード
解説としては、body変数のアクセスユーザーの情報にclientOrgRefを付与することと、JSAPIv3を使用してダッシュボードを表示する際のURLにclientOrgクエリを追加することです。
<html>
<head>
<meta charset="utf-8" />
<script src="https://code.jquery.com/jquery-3.5.1.js"></script>
</head>
<body>
<div id="reportDiv"></div>
<script>
var authUserId = '[email protected]';
var authUserPass = 'dammy';
var adminId = '[email protected]';
var adminPassword = 'test';
var body = {
signOnUser: {
userName: authUserId,
password: authUserPass,
clientOrgRef: 'test1'
},
noPassword: true,
adminUser: {
userName: adminId,
password: adminPassword
}
};
//encode to JSON
var json_text = JSON.stringify(body);
var xhr = new XMLHttpRequest();
xhr.open('POST', 'http://localhost:8940/api/rpc/login-tokens/create-sso-token');
xhr.responseType = 'json';
xhr.onload = () => {
var securityToken = xhr.response.securityToken;
//alert(securityToken);
let url = 'http://localhost:8940/JsAPI/v3?token=' + securityToken + '&clientOrg=test1';
let tp = 'text/javascript';
let sc = document.createElement('script');
sc.src = url;
sc.type = tp;
document.body.appendChild(sc);
setTimeout(function () {
yellowfin.showLoginPrompt = false;
yellowfin.init().then(() => {
yellowfin.loadDashboard({
dashboardUUID: 'e7409ff2-f846-44e1-a603-b78ec51b20b9',
element: document.querySelector('div#reportDiv')
});
});
}, 1000);
};
xhr.setRequestHeader('Authorization', 'YELLOWFIN ts=' + new Date().getTime() + ', nonce=123');
xhr.setRequestHeader('Accept', 'application/vnd.yellowfin.api-v1+json');
xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
xhr.send(json_text);
</script>
</body>
</html>
かんそう
これで、埋め込み表示でも人によってクライアント組織別でデータが違うダッシュボードも表示できるようになりますね。その前のシステムで情報は揃える必要がありますが・・・。それでもアクセスフィルターで分けているような場合だと有効なんじゃないかなと思います。
Author And Source
この問題について(Yellowfinのクライアント組織に属している人向けのJSAPIv3でのダッシュボード表示), 我々は、より多くの情報をここで見つけました https://qiita.com/celery/items/2428fd35d37cb5b2bd65著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .