[Trac] Account Manager プラグインの使い方 | A Day In The Boy's Life

A Day In The Boy's Life

とあるエンジニアのとある1日のつぶやき。

Tracのユーザー認証には、Basic認証やDigest認証が使えますが、ユーザー管理の機構が用意されているわけではありません。

そのため、パスワードファイルなどを予め用意する、またユーザーがパスワードを忘れたりした場合などはファイルを編集する作業が必要になってきます。

しかし、これではTracのシステム管理者の負担も大きくなってきます。


Account Manager プラグイン を使えば、Tracの管理サイト上からユーザーの追加・削除、パスワードの変更などが行えるようになります。

Account Manager プラグインは、Trac Hacks のサイトからダウンロードが行えます。



Account Manager プラグインをインストールする


Account Manager プラグインのインストールは、プラグインのページに書かれているように、easy_installコマンドを通して簡単に行うことが可能です。


# easy_install http://trac-hacks.org/svn/accountmanagerplugin/trunk

※ Trac0.11系の場合


easy_installコマンドは、setuptools を導入することで利用可能となります。

以前に書いた「Tracの使い方 - TracWebAdminインストール - 」の「1. setuptoolsのインストール」にsetuptoolsの導入方法を少し書いているので必要があれば参考にしてみてください。


Account Manager プラグインをeasy_installコマンドを通してインストールする場合、実際にはsubversionのリポジトリからチェックアウトを行っています。

そのため、ネットワーク環境により外部と通信ができずにうまくインストールができないかもしれません。

プロキシを介してインターネットにアクセスする必要がある環境では、subversionのプロキシ設定により、その問題を回避できるかもしれません。


# vi ~/.subversion/servers

上記ファイル内の[global]ディレクティブ内にある


http-proxy-host = proxy.hoge.co.jp
http-proxy-port = 7000 

のパラメータを環境に合うように変更しておきます。



Account Manager プラグインを有効にする


プラグインのインストールが完了したら、管理コンソール(WebAdmin)から有効にしてあげる必要があります。

TRAC_ADMIN権限があるユーザーでログインし、管理コンソールの「プラグイン」メニューを開きます。


A Day In The Boy’s Life-Account Manager プラグイン有効化


全てのコンポーネントを有効にするとエラーが発生するため、「EmailVerificationModule」コンポーネントを除いて有効化しておきます。



Account Manager プラグインを設定する


プラグインを導入すると管理コンソールに「Accounts」というメニューが追加されます。

ここにある3つのメニューからプラグインの動作設定やユーザーの追加・削除などが行えます。


- Configurationメニュー


A Day In The Boy’s Life-Account Manager プラグインConfigurationメニュー


Basic認証やDigest認証を行う場合の、ユーザーパスワードファイルのパスを指定します。

ここで設定したファイルにユーザー情報やパスワードが保存されていきます。

当然、Apacheのユーザーに書き込み権限があるディレクトリパスでないとエラーが発生します。



- Notificationメニュー


A Day In The Boy’s Life-Account Manager プラグインNotificationメニュー


Account Manager プラグインでは、デフォルトで一般ユーザーが好き勝手に新規ユーザーを作れるようになります。(変更可能)

もし、その機能を有効にするとしても、誰かがユーザーを作った場合は、アラートメールを飛ばしたいといった場合にその設定が行えます。



- Userメニュー


A Day In The Boy’s Life-Account Manager プラグインUserメニュー


ユーザーの追加・削除、パスワードの変更などが行えます。

ここで追加したユーザーとパスワードの情報は、「Configuration」メニューで登録したパスワードファイルに追加されていきます。



ユーザーのログイン方法を変更する


Account Manager プラグインを導入することでユーザーのログイン方法を変更することができます。

Tracのデフォルトでは、Basic認証やDigest認証が用意されていますが、それに加えてログインフォームを用意してそこからログインさせる方法も可能となります。

いづれにしても、参照されるパスワードファイルは管理コンソールのConfigurationメニュー内で設定したパスワードファイルが参照されます。


1. Basic認証を利用する場合


継続してBasic認証を利用したい場合は、Apacheの設定ファイル(httpd.conf)を変更する必要があります。

loginディレクトリにアクセスした際にBasic認証をかけていたかと思いますが、その項目の中から「AuthUserFile」のディレクティブに管理コンソールのConfigurationメニュー内で設定したパスワードファイルを指定します。


<LocationMatch "/trac/[^/]+/login">
AuthType Basic
AuthName "Trac"
AuthUserFile /home/hoge/htpasswd
Require valid-user
</LocationMatch>


Apacheを再起動させれば、今までどおりユーザーがTracにログインする際にはBasic認証を通してログインすることになります。

ただし、管理コンソールからパスワードファイルを変更してしまうと認証できなくなってしまうため、あまり有効ではないかもしれません。



2. ログインフォームを用意する


A Day In The Boy’s Life-Account Manager プラグインログイン画面


このように、ログインメニューをクリックしたときに、Basic認証ではなくログインフォームを表示することもできます。

まず、Apacheの設定ファイルでloginディレクトリのBasic認証に関する設定を削除またはコメントアウトします。


#<LocationMatch "/trac/[^/]+/login">
# AuthType Basic
# AuthName "Trac"
# AuthUserFile /home/hoge/htpasswd
# Require valid-user
#</LocationMatch>

続いて、Tracの設定ファイル(/path/to/project_dir/conf/trac.ini)のcomponentディレクティブ内に下記のパラメータを追加します。


[components]
trac.web.auth.LoginModule = disabled

Apacheを再起動させ、ログインメニューをクリックすると、ログインフォームが表示されるようになります。



Account Manager プラグインを使ってみる


Account Manager プラグインを導入することで、一般ユーザー側の画面にもいくつかメニューが追加されます。


A Day In The Boy’s Life-Account Manager プラグインユーザーメニュー


1. Registerメニュー


A Day In The Boy’s Life-Account Manager プラグインRegisterメニュー


Registerメニューでは、ユーザー側で自由にアカウントを追加することが可能となります。

社内でTracを使い、TRAC_ADMINの権限をあまり多くのユーザーに与えたくない、でもアカウントの発行・変更作業などの管理の手間をユーザーに任せたいといった場合などに使えると思います。


前述した、管理コンソールの「Notificationメニュー」の設定でいくつかの制御が行えます。(アカウントが作られた場合はアラートメールを飛ばすとか)


もし、Registerメニューを無効にしたい場合は、Tracの設定ファイル(/path/to/project_dir/conf/trac.ini)内の下記項目を変更します。


acct_mgr.web_ui.registrationmodule = disable


2. Forgot your password?メニュー


A Day In The Boy’s Life-Account Manager プラグインFYPメニュー

ユーザーがパスワードを忘れた場合に、このメニューから新しいパスワードを申請できます。

登録しているユーザー名とメールアドレスを入力すると、新しいパスワードを記載したメールが送信されます。


例)

Your Trac password has been reset.
Here is your account information:
Login URL: <http://trac.hoge.co.jp/trac/myproject/login>
Username: test1
Password: fK3madCv

--
intranet <http://example.org/>
My example project


3. ユーザ設定メニュー


A Day In The Boy’s Life-Account Manager プラグインユーザー設定メニュー

ユーザー設定メニューはもともと存在しますが、Account Manager プラグインを導入することで、新しくAccountタブが追加されています。

ここでは、ユーザーのパスワード変更と、そのアカウントの削除申請が行えます。


Account Manager プラグインを導入することで、柔軟なユーザー管理が行えますので、利用者が増えてきたら導入を検討してみては如何でしょうか。