Quantcast
Channel: CSSタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8925

【Laravel】Web開発初心者が1週間で入門チュートリアルを実施した記録(9)

$
0
0
以下の続き。 前回、認証機能のうち、会員登録、ログイン機能をつくった。 ・会員登録機能:済 ・ログイン機能:済 ・ログインしたユーザーは自分のフォルダのタスクだけを閲覧できる機能 入門Laravelチュートリアル (9) ToDoアプリの認証機能を作る パート2 ここでは、残りの3つ目を実装していく。 ・ヘッダーの出し分け layout.blade.php <header> <nav class="my-navbar"> <a class="my-navbar-brand" href="/">ToDo App</a> <div class="my-navbar-control"> @if(Auth::check()) <span class="my-navbar-item">ようこそ, {{ Auth::user()->name }}さん</span> | <a href="#" id="logout" class="my-navbar-item">ログアウト</a> <form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;"> @csrf </form> @else <a class="my-navbar-item" href="{{ route('login') }}">ログイン</a> | <a class="my-navbar-item" href="{{ route('register') }}">会員登録</a> @endif </div> </nav> </header> ・ログインしているかどうかはAuth::check()で確認できる、ログインしていれば、Trueが返ってくる。 ・ログインユーザーはAuth::user() で取得できる。返却値はログインユーザーの情報が入った User モデルのインスタンス。 続いてログアウト。 ログアウト機能として必要なのは route('logout') の URL に POST リクエストを送信することだけ。 今回はたまたまリンクの見た目でフォームを送信したかったので JavaScript を使用している。ログアウトリンクのクリックイベントで、リンクの下に置いたフォームを送信。 <a href="#" id="logout" class="my-navbar-item">ログアウト</a> <form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;"> ■ページ認証 続いてアプリケーションの利用にログイン認証を求める機能を実装する。 →ログインしないとフォルダやタスクの作成・閲覧ページにアクセスできないようにする。 ページに認証を求める処理はミドルウェアを用いて実現する。認証を求めるミドルウェアはデフォルトで用意されていますので、routes/web.php でルートにミドルウェアを適用。 <?php Route::group(['middleware' => 'auth'], function() { Route::get('/', 'HomeController@index')->name('home'); Route::get('/folders/{id}/tasks', 'TaskController@index')->name('tasks.index'); Route::get('/folders/create', 'FolderController@showCreateForm')->name('folders.create'); Route::post('/folders/create', 'FolderController@create'); Route::get('/folders/{id}/tasks/create', 'TaskController@showCreateForm')->name('tasks.create'); Route::post('/folders/{id}/tasks/create', 'TaskController@create'); Route::get('/folders/{id}/tasks/{task_id}/edit', 'TaskController@showEditForm')->name('tasks.edit'); Route::post('/folders/{id}/tasks/{task_id}/edit', 'TaskController@edit'); }); Auth::routes(); このミドルウェアはアクセスしたユーザーの認証状態をチェックして、ログインしていたらそのままコントローラーメソッド(または次のミドルウェア)に処理を渡す。ログインしていなければログイン画面にリダイレクト。 ■自分のフォルダとして保存 自分のフォルダやタスクだけ参照できるようにするためには、保存時に自分のフォルダとして保存する必要がある。 フォルダコントローラーのcreateメソッドで、Auth::user()を用いて、自分のフォルダとして保存する。 Auth::user()->folders()->save($folder); ■自分のフォルダとして表示 タスクコントローラーのindexメソッド(一覧画面表示)で、フォルダ取得時の処理を以下のように修正。 $folders = Auth::user()->folders()->get(); ■メールの接続設定 テスト用のメール送信サービス Mailtrap を使う。 .env に SMTP の接続情報を記載。 ・Mailable クラスを作成 php artisan make:mail CommentPosted メールの内容を変更するには、resources/views/mail/password-reset.blade.php を記載する。 <a href="{{ route('password.reset', ['token' => $token]) }}"> パスワード再設定リンク </a> 上では、リンクのみ送信される。 ■送信処理 Userモデルに以下の定義を記載。 /** * ★ パスワード再設定メールを送信する */ public function sendPasswordResetNotification($token) { Mail::to($this)->send(new ResetPassword($token)); } ResetPasswordは以下のコマンドで作成。中には、__constructとbuildメソッドが定義されているのでそこに追記する。 php artisan make:mail ResetPassword 以上で(9)は終了。

Viewing all articles
Browse latest Browse all 8925

Trending Articles