Laravel5で社内専用サイト(3)

前回は、新規ユーザーの作成までを行いました。本日は、新規作成したユーザーでログインするためのログインフォームを作成したいと思います。

AuthControllerに、下記を追加します。

app/Http/Controllers/Auth/AuthController.php

public function getLogin()
 {
 return view('login');
 }
 
 public function postLogin(Request $request)
 {
 //バリデーション
 $val=$this->validator($request->all());
 if($val->fails()){
 return redirect()->back()->withInput()
 ->withWarning('ユーザー名かパスワードが違います');
 }
 //認証手続き
 Auth::attempt([
 'name'=>$request->name,
 'password'=>$request->password
 ],$request->remember_me);
 return redirect()->to('home/index');
 }

  • 8行目:Authクラスの、attemptメソッドで認証手続きを行います。尚、Authクラスを使用するには、事前にuse Auth;でインポートしておくか、\Auth::attempt()と記述する必要があります。
  • attemptメソッドは、第1引数に、認証の条件を配列で指定します。第2引数に、trueを指定するとログイン状態の保存をすることができます。
  • 尚、if~else文で認証時と非認証の処理を分けても

下記のようなログインフォームを作成しました。

app/resources/views/login.blade.php

<!DOCTYPE html>
<html lang="ja">
 <head>
 <meta charset="utf-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <title>Login</title>
 <link media="all" type="text/css" rel="stylesheet" href="{{ url('tbs/css/bootstrap.min.css') }}">
 <link media="all" type="text/css" rel="stylesheet" href="{{ url('tbs/css/bootstrap-theme.min.css') }}">
 <link media="all" type="text/css" rel="stylesheet" href="{{ url('tbs/css/signin.css') }}">
 </head>
 <body>
 <div class="container">
 <form method="POST" action="{{ url('auth/login') }}" accept-charset="UTF-8" class="form-signin">
 {!! csrf_field() !!}
 @if(Session::has('warning'))
 <p class="alert alert-danger">{!! Session::get('warning') !!}</p>
 @else
 <h2 class="form-signin-heading" style="text-align: center"><img src="{{ url('img/winroad.gif') }}"></h2>
 @endif
 <input name="name" type="text" value="{{ old('name') }}" class="form-control" placeholder="ユーザー名" required autofocus>
 <input name="password" type="password" class="form-control" placeholder="パスワード" required>
 <label class="checkbox">
 <input type="checkbox" name="remember_me" value=1 checked=""> ログイン状態を保持する
 </label>
 <button class="btn btn-lg btn-primary btn-block" type="submit">ログイン</button>
 <br>
 <p><a href="{{ url('auth/remind') }}">パスワードを忘れた方はこちら</a></p>
 
 </form>
 </div> <!-- /container --> 
 
 <script src="https://code.jquery.com/jquery.js"></script>
 <script src="{{ url('tbs/js/bootstrap.min.js') }}"></script>
</body>
</html>

2015-08-10 11-35-13

次に、ログイン後のトップページを作成します。

app/resources/view/home/index.blade.php

@extends('tbs.base')
 @section('navbar')
 @include('tbs.navbar')
 @stop
 @section('content')
 <h1>Homeです</h1>
 @stop
  • 1行目:app/resources/views/tbsフォルダにあるレイアウト(base.blade.php)を継承します。
  • 2-4行目:ナビゲーションバーを読み込みます。ベースレイアウトであるbase.blade.phpにあらかじめ、navbarを挿入する箇所を確保していますので、ここで指定することでナビゲーションバーを挿入することができます。
  • 5-7行目:ここにメインのコンテンツを記述します。
  • 尚、ベースレイアウトで挿入箇所を確保しておいた、@section(‘sidebar’)や@section(‘footer’)に関しては、ここで指示しなければ、何もなかったものとして処理されます。

それでは、ログインしてみましょう。

2015-08-10 17-09-36

無事ログインできました。本日は、以上です。

このエントリーを含むはてなブックマーク Buzzurlにブックマーク livedoorクリップ Yahoo!ブックマークに登録

トラックバック&コメント

この投稿のトラックバックURL:

コメントをどうぞ

このページの先頭へ