これが解決策です。ご自由にお使いください ;-)
問題
私が直面した問題は非常に大きなものでした。私が取り組んでいたプロジェクトで、JasperServer の特定の顧客が管理者が追加できるすべてのリソースを追加できるように、JasperServer のデフォルトの役割のアクセス許可を変更できるかどうか尋ねられました。延々とネットを検索し、諦めかけていましたが、いきなりヒントを頂きました。このヒントは成功したものでした。上記の Stackoverflow の投稿を確認してください。
ソリューション
解決策は、JasperServer XML ファイルを変更/変更する必要がある場合です。私はすでにすべての XML ファイルを精査していましたが、適切なファイルを見つけるのは困難であることがわかりました。変更する必要がある XML ファイルは、JasperServer インストール ディレクトリの WEB-INF フォルダにあります。私のマシンでは、これでした:
C:\Program Files\jasperreports-server-cp-4.5.0-2\apache-tomcat\webapps\jasperserver\WEB-INF
必要なファイルは次のとおりです。actionModel-search.xml
警告: 最初に元のファイルのバックアップを作成することを忘れないでください。うまくいかない場合は、最初からやり直す必要はありません。
説明
まず、JasperServer をインストールします。JasperServer のコミュニティ バージョンでのみこれをテストしました。なので、これがコミュニティ版で動くのであれば、有料サポート版でも動くと思います。インストール後、JasperReports ホームページに移動し、次の資格情報でログインします。
URL: http://localhost:8080/jasperserver
User: jasperadmin
Password: jasperadmin
これは、仮想マシンでのテスト セットアップにすぎないことに注意してください。本番サーバーでこれを行う場合は、セキュリティ上の理由から jasperadmin ユーザーのパスワードを変更してください。
ログインしたらすぐに、新しいユーザーを作成します。1. [管理] をクリックします。 2. [ユーザー] をクリックします。 3. [ユーザーの追加] をクリックします。ユーザー名を付けます b. パスワードを入力します 4. [ユーザーの追加] をクリックします</p>
ユーザーが作成されたので、新しいロールを作成できます。これを行うには、次の手順に従います。
- [管理] をクリックします</li>
- 「役割」をクリック</li>
- [役割を追加] をクリックします</li>
- ロール名を入力してください
- [役割を追加] をクリックします</li>
新しく作成したロール名を書き留めます。これは、必要に応じて XML を「ハック」するために使用するロールです。
ユーザーをロールに追加するには、次の手順を実行します。
- 作成したロールをクリックします
- 「編集」をクリック</li>
- 新しいロールが必要なユーザーを選択します。
- 「保存」をクリックします。
次に行う必要があるのは、ロールにフォルダーに対する読み取り + 書き込み + 削除のアクセス許可を与えることです。
- フォルダを右クリック
- [権限] をクリックします</li>
- このアクセスが必要なロールの横にある読み取り + 書き込み + 削除を選択します
これで準備が整い、XML ファイルに「ハッキング」する準備が整いました。
actionModel-search.xml ファイルを開きます。
最初にファイルのコピーを取得することを忘れないでください。
xml ファイルの先頭で、次のようなコード行を探します。
<condition test="checkAuthenticationRoles" testArgs="ROLE_USER,ROLE_ADMINISTRATOR">
これは、変更する必要がある最初の行です。ロールを testArgs セクションに追加します。すべてのロールがカンマで区切られていることを確認してください。
<condition test="checkAuthenticationRoles"> testArgs="ROLE_USER,ROLE_ADMINISTRATOR**,USER_RESOURCES**">
次の条件行で同じ変更を行います。ファイルを保存します。変更を最新の状態にするには、JasperServer を再起動する必要があります。Windows システムでは、次の場所に移動できます。
- 停止するには: すべてのプログラム => JasperReports Server … => サービスの開始または停止 => サービスの停止
- 開始するには: すべてのプログラム => JasperReports Server … => サービスの開始または停止 => サービスの開始
作成したユーザーでログインし、適切な権限を持つフォルダーを右クリックします。これで、管理者が追加できるすべてのリソースを追加できるようになりました。
必要に応じて、XML ファイルを少しいじって、動作をさらに変更することができます。例: jasper レポートの画像を追加することを禁止されているクライアントがいます。その場合、次のように XML を変更できます。
このコードの周りに条件テストを配置します。
<option labelKey="resourceTypes.image" action="invokeCreate" actionArgs="FileResource@@img" className="up"/>
このコードのようにするには:
<condition test=checkAuthenticationRoles” testArgs=”ROLE_ADMINISTRATOR”>
<option labelKey="resourceTypes.image" action="invokeCreate" actionArgs="FileResource@@img" className="up"/></condition>
これにより、管理者のみが画像をフォルダに追加できます。ほら、JasperReports Server のコピーを試してみる準備が整いました。
楽しんで!