2014年12月1日月曜日

iDempiere ログインユーザーを登録してみた

業務の流れを一から整理しようと思っているんですが、なかなか進まず。

その前にログイン時の「振る舞い」について確認できたことを。。。

今までは常に SuperUser でログインして来ました。テストなんだからいいんだけどさ。
もちろん実際にはあり得ない話で、ログインして業務を行うユーザー個人を識別して、権限をコントロールできなきゃいかんです。当然ですが、、、




ためしに Business Partner にEmployee として登録した人でログインしようとしてもパスワードなんて入力した記憶ないし、それにEmployee名は漢字で登録してもうた。

そんなわけであれこれいじりながらユーザーでのログインまでの登録の流れ把握しました。(結果論なのですが、、)

まず、ユーザーでログインするためにはユーザー登録をします。
menu -> System Admin -> General Rules -> Security -> User

Business Partner の Contact(User) で登録している人がいれば検索画面が出てきます。


今は大した人数でもないので空白で OKすれば該当するユーザーのうちいずれか1件表示されます。
前後させながら探してもいいのですが、サーバーの負荷により「もっさり」した動作なので一覧を表示させてそこから探します。
Grid tOggle アイコンで一覧表示させた方が良いでしょう。
Grid tOggleアイコンは名前の通りトグルスイッチなので、グリッド(一覧)と単票を切り替えることができます。(検索結果が複数ある場合はまずグリッド表示してくれた方が嬉しいと思うのですが、、、)
グリッド表示させてみると、 Business Partner の Contacts で登録した人が並んでいます。



Customer やVendorであれば、担当者が複数存在していてBusiness Partner に複数の Contact(User)を登録できるのはわかりやすいのですが(1:Nの関係)、Employee の場合は??
Business Partner 1に対して複数の Contact(User)を登録することがあり得るのか?

Business Partner という意味においてデータ構造を統一するため、「Employeeでも複数Contact(User) を登録しようと思えばできる」程度と考えた方が良いのかもしれません。
複数のContact(User)を登録可能ですが、Employee の場合は Contact(User) は一つだけ登録するものだと運用で決めれば良いでしょう。

で、登録したいユーザーを選択、子タブ(画面下)から User Roles を新規追加します。

そのユーザーに割り当てるRoleを登録します。



通常子タブのレコードを作成後、↑ボタンで親タブへ戻るとセーブされます。
この role の所ではセーブされなかったのでちょっと驚いたのですが、割り当てる role をデフォルトから変更後は↑ボタンでセーブされました。
つまりRole をデフォルトのままにする場合は明示的に保存ボタンを押す必要があるようです。

初期は Admin と User のRole がありますが、もちろん必要に応じてロールを追加することが可能です。(いずれ試してみたいと思っています。)
menu -> System Admin -> General Rules -> Security -> Role


ここで User に対して User Role を登録してはじめてユーザーでログインできるようになります。
ちなみにUser Roles を登録する前は Invalid User と表示されてログインできません。



User Roles を登録したユーザーはログインができるようになります。
















ユーザーロールを複数割り当てることも可能です。

不思議なのは User を開くと Contacts に登録した情報にたどり着いて、そこから User Role が登録できるのに、Business Partner から Contacts を開いても Role の登録画面にたどり着けないことです。まぁ、視点が違うからでしょうけど、、

ユーザー名でログインしてパスワードを変更したりするには
そのユーザーでログインして
menu -> System Admin -> General Rules -> Security -> Reset Password
にて変更が可能と思われます。(まだ試していない)
運用時Super User などは変更しておくべきでしょう。


ユーザーログイン時にパスワードやユーザー名を覚えさせるのを禁じたり、パスワードを暗号化したり、ログイン時の振る舞いを変更するには
menu -> System Admin -> General Rules -> System Rules -> Security Configurator
にて設定されているようです。(まだ試していない)
例えばパスワードの暗号化はUSER_PASSWORD_HASH行をいじると変更できそうなのですが、単純に画面を開いても変更不可となっているようなので現時点では確認はあきらめて、また必要に応じて変更方法を確認しようと思っています。
(既存のユーザーのパスワードは変更されないのかな?試してみたらサーバーのDBを SQLで覗いてみます。。)


まとめとしてBusiness Partner 、User(Contacts), User, User Roles の関係を整理しておきます。



ログインユーザーの登録はMenuからの階層で言えば Partner Relations からの階層と、 System Adminからの階層両方からの登録が必要です。

Partner Relations からの階層の Contact (User) と System Admin からの階層 User のデータは同じもの(テーブル)を指しているため、どちらの画面で入力・変更しても常に同一の内容になります。

ログインのため必要な User Roles は、System Admin からの階層からしか辿ることができません。(正しい階層設計だと思います)

ログインで使うUser nameは、今回登録したユーザー名ではなく、E-mail でのログインの方が運用しやすいと思います。単に名前だとユニークであることを担保するのは面倒だったりしますので、、

E-mailでのログインへの変更方法は

User: System
Pasword: Sytem でログオンして、

menu -> System Admin -> General Rules -> System Rules -> Security Configurator から
USE_EMAIL_FOR_LOGINの値を Configured Value を Yにするとできます。


なお、この変更をしてしまうとこれまでの SuperUser や System ユーザーのログインも変わってしまいます。
それぞれ次のユーザー名となります。(パスワードは変わらず)
SuperUser  -> superuser @ idempiere.com
System  ->  system @ idempiere.com

なお、なぜか @ の前後には半角スペースが必要ですので気をつけてください。
(あと、ユーザー名はすべて小文字なので、そのまま @ 以降追加してもログインできずに焦ります。)








0 件のコメント:

コメントを投稿