Laravel3 を WebMatrix3 で開発しロリポップで公開する no.14 【SignUp ページを元に Login ページをさっくりと作る】

ユーザー登録ページを前回で作ったので、今度はログインページを作ってみようと思います。

まずは controllers に login.php を作成し、ここにログイン処理を追加します。内容は以下のとおり。

<?php

class Login_Controller extends Base_Controller
{
    public $restful = TRUE;

    public function __construct()
    {
        parent::__construct();
        $this->filter(\'before\', \'csrf\')->on(\'post\');
    }

    public function get_index()
    {
        return View::make(\'login\');
    }

    public function post_index()
    {
        $rules = array(
            \'email\'    => \'required|email\',
            \'password\' => \'required\',
        );

        $v = Validator::make(Input::get(), $rules);
        if ($v->fails())
        {
            return Redirect::to(\'login\')->with(\'login_errors\', true);
        }

        $auth = array(
            \'username\' => Input::get(\'email\'),
            \'password\' => Input::get(\'password\'),
        );

        if (Auth::attempt($auth))
        {
            return Redirect::to(\'mypage\');
        }
        else
        {
            return Redirect::to(\'login\')->with(\'login_errors\', true);
        }
    }
}

内容は signup.php とそっくりなので、特に違うところだけ説明します。

ヴァリデートのルールをログインに合わせて省略。email は、DBに同じアドレスがないかチェックをしていたのを外した。パスワードは確認フォームがなくなったので、確認フォームと同じ値が入っているかのチェックをなくしました。

Auth::attempt でログインのマッチ条件を渡し、問題がなければマイページへリダイレクト、エラーならログインフォームにリダイレクトし、エラーメッセージを表示するように指示をするフラグをフラッシュ保存で渡します。

続いて login.blade.php ビュー。

 

{{ Form::open(\'login\') }}

@if (Session::has(\'login_errors\'))
<span class=\"error\">ログイン失敗</span>
@endif

<p>{{ Form::label(\'email\', \'メールアドレス\') }}</p>
<p>{{ Form::text(\'email\') }}</p>

<p>{{ Form::label(\'password\', \'パスワード\') }}</p>
<p>{{ Form::password(\'password\') }}</p>

<p>{{ Form::submit(\'ログイン\') }}</p>

{{ Form::token() }}

{{ Form::close() }}

特筆する点はありません。最後に routes.php にルーティングを足して終了です。

それでは今回はここまで。

カテゴリー: Laravel3, Web, WebMatrix, ロリポップ タグ: , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です