権限細粒度のパラメータ制御

  • 作成者:ayuan0625
  • 編集回数:29次
  • 最終更新:ayuan0625 于 2025-11-07
  • 一.概要

    1.バージョン 

    帳票サーババージョン

    機能変動

    11.0

    -

    11.0.31

    パラメータ$fine_role_idを追加し、役割のリネームによる権限設定の無効化を防ぐ

    2.機能概要

    ユーザ認証後、帳票の3つの固定デフォルトパラメータ$fine_username$fine_role、$fine_positionがSessionに保存されます。

    同時に、GETUSERDEPARTMENTS()、GETUSERJOBTITLES()の2つの関数を提供し、それぞれ部署役割の部署と職位を取得します。

    同じ帳票環境では、テンプレート内で直接パラメータの形式で対応する値を取得でき、その後テンプレート内でフィルタリング判断を行うことで、異なるデータとスタイルを表示できます。

    3.パラメータ概要

    権限の細粒度に関連するパラメータと関数は以下の表の通りです:

    注意1:$fine_username、$fine_role、$fine_positionはFineReportのデフォルトパラメータですので、呼び出す際は大文字と小文字を正確に一致させる必要があります。

    注意2: 模擬計算はサポートされていません。

    パラメータ 

    説明

    $fine_username

    システムにログインしたユーザ名を取得

    例えば、ログインユーザ名がHanakoの場合

    $fine_username=Hanako

    $fine_display_name

    システムにログインした姓名(ユーザ名)を取得

    例えば、ログインユーザ名が花子の場合

    $fine_display_name==花子(Hanako)

    もしログインユーザの姓名「花子」のみを取得したい場合(姓名に重複がある可能性があることに注意)

    left($fine_display_name,find("(",$fine_display_name)-1)=花子

    $fine_role

    システムにログインしたユーザの役割を取得
    (役割の名前を変更した場合、権限が無効になることに注意し、次の役割IDを使用して権限設定を行うことをおすすめします)

    1)もしログインユーザがスーパ管理者である場合

    $fine_role=superusers

    2)もしログインユーザの役割がカスタム役割(例えば、データアーキテクト)である場合

    $fine_role=データアーキテクト

    3)もしログインユーザに役割がない場合、

    このパラメータの値は空白

    4)もしログインユーザに複数の役割「役割1」「役割2」が存在する場合

    $fine_role=役割1,役割2 

    $fine_role_id

    システムにログインしたユーザの役割IDを取得

    1)ログインユーザがスーパ管理者の場合
    $fine_role_id=super-user-custom-role
    2)ログインユーザの役割がカスタム役割
    (例:データアーキテクト、idが7b37b885-190d-4db0-b3d3-bf2d15285447)の場合
    $fine_role_id=7b37b885-190d-4db0-b3d3-bf2d15285447
    3)ログインユーザに役割がない場合
    このパラメータの値は空白
    4)ログインユーザに複数のカスタム役割「役割1」「役割2」がある場合
    $fine_role_id=役割1のid,役割2のid

    $fine_position

    部署職位を取得し、戻り値は部署と職位で構成される配列とする

    1)ログインユーザが「人事部-部長」の場合
    $fine_position={"departments":"人事部","jobTitle":"部長"}
    2)ログインユーザが「人事部-部長」兼「管理部-部長」の場合
    $fine_position={"departments":"人事部","jobTitle":"部長"},{"departments":"管理部","jobTitle":"部長"}
    3)ログインユーザに部署職位がない場合
    このパラメータの値は空白

    GETUSERDEPARTMENTS()

    部署職位内の部署を取得
    部署に複数の階層がある場合、すべての階層を返す
    複数の部署がある場合、すべての部署を返す

    1)ログインユーザが「人事部-部長」の場合
    GETUSERDEPARTMENTS()=人事部
    2)ログインユーザが「営業部-関東営業部-リーダー」の場合
    GETUSERDEPARTMENTS()=営業部,関東営業部
    3)ログインユーザが「人事部-部長」兼「管理部-部長」の場合
    GETUSERDEPARTMENTS()=人事部,管理部
    4)ログインユーザに部署がない場合
    このパラメータの値は空白

    GETUSERDEPARTMENTS(X)

    部署職位内の第X層の部署を取得
    第X層の部署が存在しない場合、空白値を返す

    1)ログインユーザが「営業部-関東営業部-関東営業1組-リーダー」の場合
    GETUSERDEPARTMENTS(3)=関東営業1組
    GETUSERDEPARTMENTS(3,2)=関東営業1組,関東営業部
    2)ログインユーザが「営業部-関東営業部-リーダー」の場合
    GETUSERDEPARTMENTS(3)は空白値
    GETUSERDEPARTMENTS(3,2)=関東営業部

    GETUSERJOBTITLES()

    部署職位内の職位を取得
    複数の職位がある場合、すべての職位を返す

    1)ログインユーザが「人事部-部長」の場合
    GETUSERJOBTITLES()=部長
    2)ログインユーザが「人事部-部長」兼「管理部-president」の場合
    GETUSERJOBTITLES()=部長,president
    3)ログインユーザに職位がない場合
    このパラメータの値は空白

    二.例一:ログイン名に基づくデータ内容の制限

    本文の例:

    FineReportポータルにはユーザsuzukinとyamadaが存在します。

    データベースの「SALES_BASIC」テーブルには、「英語略称」というデータ列があり、この列のデータはFineReportポータルのユーザ名に対応しています。

    「SALES_BASIC」テーブルに基づいて、「ログイン名に基づくデータ内容の制限」というテンプレートを作成し、FineReportポータルのディレクトリにマウントします。

    suzukiとyamadaがシステムにログインしてこのテンプレートを表示すると、自分の販売データのみを見ることができ、他の内容は見ることができません。

    注意:本章ではデータセットパラメータを例に使用していますが、ユーザはテンプレートパラメータを使用することもできます。

    1.テンプレートの新規作成

    デザイナを開き、新しい一般帳票を作成します。

    新しいデータベースクエリds1を作成します:SELECT * FROM SAlES_BASIC where 英語略称='${fine_username}'

    システムにログインしたユーザ名を取得します。例えば、ログインユーザ名がsuzukiの場合、$fine_username=suzuki。

    以下の図のように:

    图片1.png 

    2.テンプレートのデザイン

    テンプレートのスタイルデザインは以下の図のように:

    图片2.png

    3.ポータルへのテンプレートのマウント

    管理者がFineReportポータルにログインし、[システム]-[目次管理]をクリックし、[ディレクトリ管理]を選択し、[テンプレート追加]をクリックします。

    前の節で作成したテンプレート「ログイン名に基づくデータ内容の制限」を選択し、[次へ]をクリックします。[タイプ]を[プレビュー]に選択し、[表示端末]の[PC]をチェックし、[確定]をクリックします。以下の図のように:

    图片3.png 

    4.テンプレートのプレビュー権限の設定

    管理者がFineReportポータルにログインし、[システム]-[権限管理]-[一般権限設定]をクリックします。

    権限のキャリアを[全ての部署]に選択し、ディレクトリ「ログイン名に基づくデータ内容の制限」の[プレビュー]権限を割り当てます。以下の図のように:

    图片4.png 

    5.効果のプレビュー

    ユーザsuzuki(suzuki,123456)がFineReportポータルにログインしてこのテンプレートをプレビューすると、自分の販売内容のみを確認できます。以下の図のように:

    图片5.png 

    ユーザyamada(yamada,123456)がFineReportポータルにログインしてこのテンプレートをプレビューすると、自分の販売内容のみを確認できます。以下の図のように:

    图片6.png 

    6.テンプレートのダウンロード

    テンプレートをダウンロードするにはこちらをクリックしてください:

    ログイン名に基づくデータ内容の制限.cpt

    注意:ポータルにテンプレート内の対応するユーザsuzukiとyamadaが存在することを確認してください。そうでない場合、最終的な効果を正しく表示できません。

    三.例二:ログイン役割に基づく表示行と列の制限

    異なる役割がテンプレートにアクセスするとき、表示されるテンプレートの列数や行と列の色が異なることを希望する場合、行と列に条件属性を追加して行の高さ、列の幅、背景などを設定することができます。

    本章の例:

    FineReportポータルには「demo」という役割があり、ユーザAnnaはこの役割に属し、ユーザAliceはこの役割に属していません。

    ディレクトリにはあるテンプレートがマウントされており、このテンプレートには「販売量」列が存在します。

    「demo」役割に属さないユーザAliceがFineReportポータルにログインしてこのテンプレートをプレビューすると、「販売量」列を確認できます。

    「demo」役割に属するユーザAnnaがFineReportポータルにログインしてこのテンプレートをプレビューすると、「販売量」列を確認できません。

    1.テンプレートの新規作成

    デザイナを開き、新しい一般帳票を作成します。

    新しいデータベースクエリds1を作成します:SELECT * FROM 販売量

    以下の図のように:

    图片7.png 

    2.テンプレートのデザイン

    テンプレートのスタイルデザインは以下の図のように:

    图片8.png 

    3.条件属性の設定

    E2セルを選択し、右側の設定バーの[条件属性]をクリックし、[条件の追加]を選択します。

    [数式条件]の[タイプ]を[数式]に設定し、数式の内容は次の通りです:$fine_role='demo'。[追加]をクリックします。以下の図のように:

    注意:ユーザが複数の役割を持っている場合、数式はfind('demo',$fine_role)>0となります。

    图片9.png 

    4.ポータルへのテンプレートのマウント

    管理者がFineReportポータルにログインし、[システム]-[目次管理]をクリックし、[ディレクトリ管理]を選択し、[テンプレート追加]をクリックします。

    前の節で作成したテンプレート「ログイン役割に基づく表示行と列の制限」を選択し、[次へ]をクリックします。[タイプ]を[プレビュー]に選択し、[表示端末]の[PC]をチェックし、[確定]をクリックします。以下の図のように:

    图片10.png 

    5.テンプレートのプレビュー権限の設定

    管理者がFineReportポータルにログインし、[システム]-[権限管理]-[一般権限設定]をクリックします。

    権限のキャリアを[全ての部署]に選択し、ディレクトリ「ログイン名に基づくデータ内容の制限」の[プレビュー]権限を割り当てます。以下の図のように:

    图片11.png 

    6.効果のプレビュー

    「demo」役割に属さないユーザAlice(Alice,123456)がFineReportポータルにログインしてこのテンプレートをプレビューすると、「販売量」列を確認できます。以下の図のように:

    图片12.png 

    「demo」役割に属するユーザAnna(Anna,123456)がFineReportポータルにログインしてこのテンプレートをプレビューすると、「販売量」列を確認できません。以下の図のように:

    图片13.png 

    7.テンプレートのダウンロード

    テンプレートをダウンロードするにはこちらをクリックしてください:

    ログイン役割に基づく表示行と列の制限.cpt


    Attachment List


    Theme: 【D】删除篇目
    • いいね
    • 良くない
    • 閲覧しただけ