4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Laravel簡単ログイン機能に関する記事が少なかったので投稿してみた。

Posted at

はじめに

Laravelのポートフォリオ制作の過程において簡単ログイン機能の記事が少なく、(Railsの簡単ログイン機能の記事は山ほどあった。。笑)
個人的には参考にできる記事がなかったので、もしLaravelでポートフォリオ制作に おいてこの機能についてお役に立てたら幸いです。

※注意点

ポートフォリオを見て頂く方のストレスを軽減する事を優先ているため、セキュリティに関しては一切考慮していないので予めご了承ください。

開発環境

Laravel 6.18.40
PHP 7.3.11
Mysql
MacOS

ゲストユーザーデータをDBに登録する

Laravelのインストール時にデフォルトで用意されているDatabaseSeederクラスを変更。

※insertする値は自分で設定してください※

(例)
'name' => 'ゲストユーザー',
'email' => 'aaabbbccc@',
'password' => 'aaabbbccc',

<?php

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;

class DatabaseSeeder extends Seeder
{
    /**
     * データベース初期値設定の実行
     *
     * @return void
     */
    public function run()
    {
        DB::table('users')->insert([
            'name' => Str::random(10),
            'email' => Str::random(10).'@gmail.com',
            'password' => Hash::make('password'),
        ]);
    }
}

views

hidden属性値を使って簡単ログインボタンをサブミットします。

<form method="post" action="{{ route('login.guest') }}">
      @csrf
      <input type="hidden"  name="email" value="登録したデータ">
      <input type="hidden"  name="password" value="登録したデータ">
      <button type="submit" class="btn btn-primary">ユーザー簡単ログイン</button>
</form>

ルーティング

名前付きルートを指定
->name('login.guest')

Route::post('login/guest', 'Auth\LoginController@guestLogin')->name('login.guest');

コントローラー

attempt関数でviewファイルのhiddenで受け取った値を認証して、認証した場合はtrueを返します。今回であれば一般ユーザーのログイン後と同じ操作を可能としています。もし不正の値の場合はリダイレクトして元の画面に戻るようにしてあります。

<?php

namespace App\Http\Controllers\Auth;

use Auth;
use App\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;

class LoginController extends Controller
{
   
    use AuthenticatesUsers;

    protected $redirectTo = '/';

    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }

    public function guestLogin(Request $request)
    {
        
        if(Auth::attempt(['email' => $request->input('email'), 'password' => $request->input('password')])){

            $articles = Article::latest()->paginate(5);
            return view('articles.index', ['articles' => $articles]);

        }
            return redirect()->back();
            
    }

}

最後に

冒頭でも書きましたが、セキュリティに関しては目を瞑ってください。
この実装内容は本番環境では到底で使用きませんが、柔軟に機能実装できるエンジニア脳を鍛えていきたいですね。

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?