読者です 読者をやめる 読者になる 読者になる

Code for final

ふぁいなる向けのコード置き場です。すでにコードじゃないこともいっぱい。

intra-martでルーティング追加したあと再起動してログインしただけなのに500エラーが出て詰んだとき。

intra-mart

accel開発経験者なら必ずあるのではないでしょうか。

  • メニューに新しい画面を追加して、ルーティングを追加して再起動してログインすると500エラーになって何もできなくなること。

  • ほかの人からメニューをもらってインポートしたあとトップページを表示したら500エラーになって何もできなること。

こういう場合は、たいてい認可リソースが不足しているのが原因です。
認可の仕組みをよく理解せずにてきとーにリソースURIを書いてしまったときに起きます。
認可リソースURIをルーティングに書くときはまず、認可の画面から先にリソースを作成しておく必要があります。

コンソールに不足している認可リソースが以下のような感じで出ていると思います。

Caused by: jp.co.intra_mart.foundation.authz.services.ResourceNotFoundException: [E.IWP.AUTHZ.DECISION.10007] リソースグループが登録されていません。 URI = service://sandbox

認可画面からリソース追加するかーとテナント管理者でログインすると500エラーが…
なんと、こうなったらテナント管理でもログインできなくなります。管理者なのに。

じゃ、システム管理者かーと思って、管理者のメニュー見ても認可はありません。
詰んだ。
という状況になります。
これで環境を作りなおしたひともいるんじゃないでしょうか。

ではこういうときどうするかというとテナント管理者でログインした後に以下の認可のURLを直接たたきます。

http://localhost:8080/imart/tenant/authz/settings?imui-theme-builder-module=headwithcontainer

社内のimに詳しいひとに教えてもらいました。
単純に認可の画面のpathだけたたいてもだめです。テーマのメニュー表示を無効にしないとメニューをロードするので結局500エラーになります。
こんなん普通のひとはわからないですよね。

こんなこともあるので新しい画面を作ったらメニューに追加するのは最後の最後をおすすめします。(開発中はURL直打ちのほうが早いです)
あと開発中の認可は"welcome-all"でいいと思います。

これで解決できるとは言え、メニューを表示するときそのメニューの認可リソースがないからってログインできなくなるのは横暴な気もしますが。テナント管理者はログインできるようにするか、メニューに表示されないくらいにとどめておいてほしいものです。