Yellowfin 클라이언트 조직에 속한 사람을위한 JSAPIv3의 대시 보드보기



개요



제목과 같지만, 싶다고 하는 경우에 사용할 수 있는 방법을 검증한 결과, 무사히 표시할 수 있었으므로 그 메모를 남기려고 생각합니다.

전제



· 관리자 및 액세스 사용자가 있습니다. 이 경우 관리자 사용자( CORS 설정을 수행하고 webserver를 통해 REST로 Yellowfin 서버에 액세스 ), 액세스 사용자( 아 d 민 @ 이 ぉ w w 흠. 이 m. 아우 ).
· 액세스 사용자는 test1이라는 클라이언트 조직에 속합니다 (참조 ID도 추가).
・이번의 경우는 SSO를 유효하게 하고 있기 때문에, 아 d민 2@이ぇぉw 후우. 이 m. 아우완료입니다.

샘플 코드



설명은 body 변수 액세스 사용자 정보에 clientOrgRef를 부여하고 JSAPIv3을 사용하여 대시보드를 표시할 때 URL에 clientOrg 쿼리를 추가하는 것입니다.

dashboradClientRef.js
<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>


칸소



이제 내장 표시에서도 사람에 따라 클라이언트 조직별로 데이터가 다른 대시보드도 표시할 수 있게 되네요. 그 전의 시스템으로 정보는 가지런히 할 필요가 있습니다만・・・. 그래도 액세스 필터로 나누고 있는 경우라면 유효한 것이 아닐까 생각합니다.

좋은 웹페이지 즐겨찾기