WinRoadのLaravel4初心者講座

次世代PHPフレームワークのLaravel4を初心者向けに解説して参ります。

Winroad徒然草の管理人がお届けします
ログインページの作成

ログインページの作成

このエントリーをはてなブックマークに追加

ログインページを作成しましょう。ログインの作成方法は、ルーター内にログイン用のロジックを作成する方法、ログイン専用のコントローラーを作成する方法、ユーザーコントローラー内にログインを作成する方法などがありますが、今回は、UserController内にログインアクションを作成することにします。

UserControllerに下記のコードを追加します。

ログインアクションの作成

app/controllers/UserController.php
 /*
|-----------------------------------------
| ログイン
|-----------------------------------------
*/
 public function getLogin(){
     return View::make('user/login');
 }
 public function postLogin(){
 //受信データの整理
 $inputs=Input::only('email','password');
 //バリデーションの指定
 $rules=array(
 'email'=>'required|email',
 'password'=>'required|min:4',
 );
 //バリデーションチェック
 $val=Validator::make($inputs,$rules);
 //バリデーションNGなら
 if($val->fails()){
 return Redirect::back()
 ->withErrors($val)
 ->withInput();
 }
 //ログイン認証
 $inputs['activate']=1;
 if(Auth::attempt($inputs)){
      return Redirect::intended('/');
 }
     return 'ログインできません';
 }
 /*
|-----------------------------------------
| ログアウト
|-----------------------------------------
*/
 public function getLogout(){
     Auth::logout();
     return Redirect::to('/');
 }
  • 6-9行目:GETで、ビューファイルを表示します。
  • 13-24行目:バリデーション処理を行います。
  • 26行目:ユーザー認証にactivate項目が1の条件を追加します。これで、アクティベートしていないユーザーはログインできなくなります。
  • 28行目:intendedメソッドで、元(ログイン前)のページへリダイレクトします。
  • 37-40行目:ログアウト処理をします。

ログインビューの作成

ログイン用のビューファイルを下記のように作成します。

app/views/user/login.blade.php
<!DOCTYPE html>
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>ログイン</title>
{{ HTML::style('hbp/hpbparts.css') }}
{{ HTML::style('hpb/container_12Ba_2c_top.css') }}
{{ HTML::style('hpb/main_12Ba_2c.css') }}
{{ HTML::style('hpb/user.css') }}
{{ HTML::style('tbs/css/bootstrap.min.css') }}
</head>
<body>
<h3>ログイン</h3>
{{ Form::open() }}
{{ Form::label('email','メール') }}
{{ Form::text('email',Input::old('email','')) }}<br>
@if($errors->has('email'))
<h4 style="color:red;text-align:center">{{ $errors->first('email') }}</h4>
@endif
{{ Form::label('password','パスワード') }}
{{ Form::password('password') }}<br>
@if($errors->has('password'))
<h4 style="color:red;text-align:center">{{ $errors->first('password') }}</h4>
@endif
{{ Form::token() }}
{{ Form::submit('ログイン',array('class'=>'btn btn-success')) }}
{{ Form::close() }}
</body>
</html>
  •  8-11行目:ホームページビルダーで作成したスタイルシートを適用しています。
  • 12行目:Twitter Bootstrapのスタイルシートを適用しています。
  • 27行目:tokenメソッドは忘れずに挿入しましょう。

authフィルターの修正

次にauthフィルターを若干、修正します。

app/filters.php
Route::filter('auth', function(){
    if (Auth::guest()) return Redirect::guest('user/login');
});
  • authフィルターが、認証していないときの移動先が、’login’だったのを、’user/login’に変更しています。

これで、簡単ではありますが、ユーザー認証は完成しました。後は、ユーザーのRoleによって、アクセスできるページやアクションを制限したりする事が出来ますので、各自の条件に応じて作成してみて下さい。

尚、Laravelにはデフォルトで、パスワードリマインダーが付属していますが、後日調べてご報告したいと思います。

« »

コメントを残す

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