こんにちは,五十嵐です.今回は registuser を作成します.が,その前に...
なんだか,サイドのメニューの部分がよくわからなくて,寂しいので,色を付けてみました.
root/static/css/style.css
@@ -124,8 +124,11 @@
#left {
float: left;
- width: 200px;
+ width: 198px;
+ margin-left: 2px;
overflow: hidden;
+ color: #000000;
+ background-color: #ccffff;
}
#center {
@@ -137,8 +140,11 @@
#right {
float: right;
- width: 200px;
+ width: 198px;
+ margin-right: 2px;
overflow: hidden;
+ color: #000000;
+ background-color: #ccffff;
}
.indent {

メニューのマージンもちょっと調整.どうも,やらなければいけないことを後回しにして,いろいろ遊んでしまいます(笑) もうちょっと集中せねば...
さて,registuser.登録結果を表示させるために resultmessage というハッシュに結果を格納します.これを表示させるために listusers_center.tt に resultmessage を表示させるための設定を追加します.後述しますが,registuser は,最終的に listusers の処理を使用して最終結果を表示します.
listusers_center.tt の変更
@@ -1,4 +1,11 @@
<div id="listuser_center">
+[% IF resultmessage -%]
+<div id="resultmessage">
+<h1>結果</h1>
+<div id="resultmessage_contents">[% resultmessage %]</div>
+<hr />
+</div>
+[% END -%]
<h1>ユーザリスト</h1>
<button id="searchuser_button">検索</button>
パスワードを格納する際に SHA-1 を使用します.Digest::SHA を使用しますが,全体で使用しますので,lib/SecureSBM.pm で use 宣言しておきます.
lib/SecureSBM.pm
@@ -18,6 +18,8 @@
StackTrace
/;
+use Digest::SHA;
+
our $VERSION = '0.01';
#
最後に lib/SecureSBM/Controller/Admin.pm に registuser を追加します.ポイントのみ掲載します.
lib/SecureSBM/Controller/Admin.pm の変更
sub registuser : Local {
(...略...)
# form からのパラメータの取得
foreach my $k ( qw/user_email user_name user_surname/ ){
$data{$k} = $c->req->param( $k );
}
受け取ったデータを %data に格納します.後に DB で create そする場合にそのままデータとして渡します.
$data{'user_password'} =
Digest::SHA::sha1_hex( $c->req->param( 'user_password' ) );
パスワードは,Digest::SHA::sha1_hex()を用いてハッシュ化して格納します.
$data{user_email} =~ tr/A-Z/a-z/;
email の文字列は,すべて小文字で格納します.大文字小文字の区別はしません.
(...略...)
if( $dg = $c->model('SecureSBMDB::Role')
->find( {role_name => $defaultgroup} ) ){
find で指定されたグループが存在するかどうかを確認します.存在しなければ,"public" に設定してしまいます.
$dg = $c->model('SecureSBMDB::Role')
->find_or_create( {role_name => 'public'} );
(...略...)
email のアドレスが既登録かどうかを確認します.
if( $c->model('SecureSBMDB::User')
->find({user_email => $useremail}) ){
# 新規であれば登録 (create)
}elsif( $user = $c->model('SecureSBMDB::User')
->create(\%data) ){
UserRole にも関連付けを行います.
if( $c->model('SecureSBMDB::UserRole')
->create(\%user_roles) ){
成功
}else{
失敗
}
# 登録失敗
}else{
$resultmessage .= "<p>ユーザ(E-mail)["
. $useremail
. "]の登録に失敗しました.</p>";
}
}
最後に今までのメッセージを格納し,
$c->stash->{resultmessage} = $resultmessage;
listusers の処理に渡します.
$c->forward('listusers');
} # end of registuser()
これで,registuser が終わりました.次は,deleteuser です.
2007/03/22 記
参考:
Keyword: Perl Catalyst Secure-SBM SSBM セキュア・ソーシャル・ブックマーク