概要
簡単な個人情報と学歴/職歴を登録できる履歴書です。
本システムの持つ機能の多くを利用した例になっており、
比較的大きな規模のアプリケーションを作成するときに参考になるかと思います。
個人情報を誰にでも閲覧できるという点で、
サンプルそのものは実用的ではありませんので、ご注意ください。
事務局用と一般用の二つのインターフェースを持ち、
複数ページからなる挿入画面 / 詳細表示画面、
画像ファイルの挿入、詳細表示画面のエクスポート、
ユーザ登録などの機能を利用しています。
動作環境
- 本システムが動作する環境
- 本システム
- Apache の mod-auth-pgsql モジュール
- cp, identify, convert, tifftopnm, pnmtojpeg コマンド
(data.conf の $self->{debug}{check_conf} を参照)
インストールの手順
- 上述した動作環境を元に、必要なソフトウェア等をインストールします。
- 履歴書 に関連するファイルを samples/cv 以外のディレクトリに
置きたい場合は、samples/cv ディレクトリを適当な位置にコピーします。
ここでは、basedir にコピーしたものとします。
$ cp -r .../samples/cv basedir
- basedir/Makefile を編集します。
最低限、以下の項目の変更を行う必要があります
(環境によっては他に変更が必要な項目があります):
- 構成定義ファイル basedir/base.conf を編集します。
最低限、以下の項目の変更を行う必要があります
(環境によっては他に変更が必要な項目があります):
- $base->{conffile}
- $base->{authconffile}
- $base->{nph}
- $base->{suexec}
- $base->{group}{staff}{template_cgitodir}
- $base->{group}{pub}{template_cgitodir}
- データ定義ファイル basedir/data.conf を編集します。
最低限、以下の項目の変更を行う必要があります
(環境によっては他に変更が必要な項目があります):
- $self->{global}{basedir}
- $base->{global}{baseuri}
- $base->{global}{mailfrom}
- $base->{global}{mailto}
- $base->{global}{export_file}
- $base->{global}{export_uri}
- $base->{global}{insert_mail} 内の $uri 変数
- $base->{global}{upload}{dir}
- $base->{global}{upload}{pooldir}
- $base->{global}{upload}{tmpdir}
- $base->{global}{upload}{fileuri}
- $base->{global}{upload}{tmpfileuri}
- $cmd (identift, convert, tifftopnm, pnmtojpeg, cp のパス)
- basedir/auth_init.sql を編集します。
最低限、以下の項目の変更を行う必要があります
(環境によっては他に変更が必要な項目があります):
- INSERT INTO auth_info ( ... ) コマンドの "username", "passwd",
"passwd_crypt" の値(デフォルトは 'staff', 'staff', '...')
- INSERT INTO auth_info ( ... ) コマンドのメールアドレス
"email" の値(デフォルトは 'admin')
ここで設定する "username", "passwd_crypt" の値は、
事務局用インターフェイスを利用する際の BASIC認証に使われます。
passwd_crypt には、passwd のMD5メッセージ・ダイジェストを
記述してください。
- 設定が終わったら、basedir で 'make', 'make install' を実行します。
問い合わせには、全て 'yes' と答えます。
この作業は、必要なディレクトリを作成するために、
最初に行わなければいけません。
$ make
$ make install
エラーが出れば、該当するファイルを修正してください。
- basedir で 'make test' を実行し、エラーがないことを確かめます。
$ make test
エラーがあれば、ファイルを修正して、
再び 'make install', 'make test' を実行してください。
この作業を、エラーが出なくなるまで繰り返します。
- 次のように、PostgreSQL ユーザ dbipg とデータベース dbipg_cv を作成します。
$ createuser dbipg
$ createdb -E EUC_JP dbipg_cv
$ psql -U dbipg dbipg_cv
=> alter user dbipg password 'dbipg_passwd';
PosgreSQLユーザとデータベースの作成方法の詳細は、
PostgreSQL のマニュアルをご覧ください。
PostgreSQL ユーザ dbipg やパスワードは、
データ定義ファイルの $self->{global}{db} で変更できます。
また、データベース名は複数箇所で設定されていますので、
変更する場合は、grep などを利用して対応する箇所を変更してください。
- BASIC認証の際に用いる PostgreSQL ユーザ dbipg_auth を作成します。
$ createuser dbipg_auth
$ psql -U dbipg_auth dbipg_cv
=> alter user dbipg_auth password 'pass'
PostgreSQL ユーザ dbipg_auth やパスワードは
複数箇所で設定されていますので、
変更する場合は、grep などを利用して対応する箇所を変更してください。
- 'make sql' を実行して、必要なテーブルを作成するための SQL文を用意します。
また、その際に出力されるメッセージに従ってテーブルを作成します。
$ make sql
$ psql -f create.sql -U dbipg dbipg_bbs
- ブラウザからCGIを呼び出し、正常に動作することを確認します。
履歴書の特徴
- 事務局用インターフェイス(staffグループ)では、
データの追加・修正・検索・閲覧・削除が行えます。
.htaccess により、BASIC認証を行っています。
- 一般用インターフェイス(pubグループ)では、
データの追加・修正・検索・閲覧が行えます。
ただし、有効でないデータの閲覧や、他人が挿入したデータの修正は
行えません。
データの追加・修正を行うためには、事前にユーザ登録をする必要が
あります。
- BASIC認証には、Apache の mod-auth-pgsql モジュールを使っています。
- 一般用インターフェイスからデータを追加/修正した場合は、
データの状態は申請中になります。
事務局のみがデータを有効にできます。
- 一般用インターフェイスからデータを追加/修正した場合は、
その処理を行ったユーザに、登録完了のメールが送られます。
- ファイルのアップロードの機能を使って、
各データに画像ファイルを登録することができます。
- 事務局用インターフェイスでは、
システム情報や修正前のデータとの差分を表示できます。
補足
データの追加/修正
- 「姓(カナ)」・「名(カナ)」では、
ひらがながカタカナに置換されます。
- 「生年月日」に未来の日付や存在しない日付が入力されると、
エラーとみなします。
- 学歴/職歴の「年」は、検索用カラムを持っており、
入力された年を西暦に置換した値を int2 型として格納しています。
- 「写真」では、gif, jpg, pct, bmp, tiff の形式を受け付けます。
また、サムネイルが自動で作成されます。
データの検索・表示
- 詳細表示画面のエクスポートを行っているため、
有効なデータの詳細表示の際には、あらかじめ静的に出力された HTML
が表示されます。
- 事務局用のカラムは、一般用インターフェイスからアクセスできません。
- JOIN句を使った検索の例として、
同姓同名のデータのみを検索する機能を備えています。
- 検索結果の画面から、検索結果の表示順序を変えられるように
なっています。
- cgi/*/print_html.cgi は、本システムが提供する API の応用例になっています。
本システムではデフォルトの状態では、
詳細表示が行われたデータに対してログをとりませんが、
print_html.cgi の対応するコメントをはずすことでログをとります。
- データの差分を表示する diff.cgi は、
本システムが提供する API のやや高度な応用例になっています。
実際、データの差分をとる API は存在しませんが、
複数の API を組み合わせることでそれを実現しています。
アクセス制限
- dbipg_auth は、
BASIC認証を行うときに必要なカラムのみにアクセスできます。
dbipg とは別のユーザにしているのは、セキュリティのためです。
- BASIC認証には、MD5 を利用しています。
template_static/staff/.htaccess, cgi/*/auth/.htaccess
を参照してください。