アーカイブ
Tyzohブログ - ikarashiさんのエントリ
 ikarashiさんのエントリ配信

2007/05/31
[Secure-SBM:010] データベース管理処理 (3)

執筆者: ikarashi (3:26 pm)
こんにちは,五十嵐です.今回は 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 セキュア・ソーシャル・ブックマーク
ikarashiさんのブログを読む | コメント (0) | トラックバック数 (0) | 閲覧数 (4493)
Trackback is not accepted now.
印刷用ページ 友達に送る
 
投稿された内容の著作権はコメントの投稿者に帰属します。
サイト内検索
ブログ カレンダー
«  «  2008 3月  »  »
24 25 26 27 28 29 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5