Laravelにあるauthを使うとログインとレジスター(登録)画面が作れると見かけたので早速入れたいと思います。
Laravelクイックスタートのblogプロジェクトを作ったあとから進めていきます。
またデータベースの設定も済ましてあります。まだの方は以下を参照ください。
(MySQLの設定まででOKです。)
動作環境
ざっくりMac El capitan
mysql@5.6
PHP7.2.5
Laravel Framework 7.6.2
ローカル環境です。
テーブルを作成する
Laravelプロジェクト既存のテーブルを作成します。
php artisan migrate
■ 返答
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (0.16 seconds)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated: 2019_08_19_000000_create_failed_jobs_table (0.04 seconds)
make:authする(できなかった)
以下コマンドを実行。
php artisan make:auth
■ 返答
command “make:auth” is not defined.
またか。スムーズに行ったことないな。
authを作成する
以下を実行。
composer require laravel/ui –dev
php artisan ui vue –auth
php artisan ui vue –authを実行すると「Please run “npm install && npm run dev” to compile your fresh scaffolding.」
と書かれているので実行する。
npm install
npm run dev
さりげなくvueデビューしてしまった。わかってないけど、やってみよう。
最後にアップデートできるよ、と言われたけど、置いておく。
サーバー起動。
php artisan serv
ホーム画面右上に「Login」と「Register」が追加されました。
リンクをクリックするときちんと機能しています。
さっそくレジスターしてみます。
なんかログインできました。
とくに面白い画面でもないですが、URLもhttp://localhost:8000/homeへ変わったのが確認できました。
画面の追加
controllerなどにもいい加減なれないといけないので、せっかくなので画面を追加します。
参考サイト:Laravel 6.x でログイン機能を構築
ただの備忘録として実行記録を残しているだけなので、詳しくは上記のサイトをご覧ください。
以下を実行してcontrollerの作成。
php artisan make:controller BookController
作成されたcontrollerを編集。
ファイルパス:app/Http/Controllers/BookController.php
■ 修正前
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class BookController extends Controller
{
//
}
■ 修正後
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;use Illuminate\Support\Facades\Auth;
class BookController extends Controller{
public function __construct() {
$this->middleware(‘auth’);
}
public function index() {
$user = Auth::user(); $data = [‘user’ => $user];
return view(‘book.index’, $data);
}
}
web.phpを編集。
ファイルパス:routes/web.php
以下コードを最後の行に追加
Route::get(‘/book’, ‘BookController@index’);
home.brade.phpを複製。(resources/views/の中)
複製したphp(resources/views/book/index.brade.php)に以下を貼り付け。そのまま全部決して貼り付けてもいいのでしょうが、一応@endifの下に貼り付けました。
<p>{{ $user->name }}</p>
<p>{{ $user->email }}</p>
ついでにHome.blade.phpのYou are logged in!の下に以下コード追加。
<div class=”flex-center position-ref full-height”>
<div>
@auth
<a href=”{{ url(‘/book’) }}”>book</a>
@endauth
</div>
</div>
サーバーを起動しログイン。
You are logged in!
book
となっているのでbookをクリック。
ユーザー名とemailアドレスが表示されるようになりました。