Catatan Laravel #8 (Login)


Assalamu 'alaikum wr wb
pada postingan kali ini kita akan membahas tentang salah satu framework PHP yang sangat populer yaitu laravel
Kali ini kita akan membuat login, login ke halaman pegawai dimana master pegawai sudah kita buat di postingan-postingan sebelumnya,,

-
ochee,,
untuk mempersingkat waktu langsung aja kita buat tabelnyaa,
Nama table : users
terdiri dari field ,,

Isi saja sebagai contoh


kemudian buat view loginnya
Controller : LoginController
Model : Users
Views : login/index.blade.php

LoginController
namespace
use App\Users;
use Auth;

class LoginController
public function index()
    {
        return view('login.index');
    }

public function login(Request $request)
    {
        if(Users::where(['email'=>$request->email, 'password'=>$request->password])->count() < 1)
        {
            return redirect()->route('get.login');
        }
        else
        {
            $user = Users::where(['email'=>$request->email, 'password'=>$request->password])->first();

            Auth::guard('user')->login($user);
            return redirect()->intended(route('pegawai.user'));
        }
    }

Route
web.php
Route::get('login','LoginController@index')->name('get.login');
Route::post('login','LoginController@login')->name('post.login');

Views
index.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
    <title>Login Pegawai</title>
</head>
<body>
    <h3>Login Pegawai</h3>
    <a href="http://localhost/larako/">Kembali</a>
    <br/><br/>
    @section('content')
        <form method="POST" action="{{route('post.login')}}">
            {!! csrf_field() !!}
                Email <br/>
                <input type="email" name="email" required="required" placeholder="Email"><br/>
                Password <br/>
                <input type="password" name="password" required="required" placeholder="Password"><br/>
                    <button>
                        Login
                    </button><br/>
                            email : ekoas@gmail.com<br/>
                            password : magerblog<br/>

                        <a href="#">
                            Sign Up
                        </a>
        </form>
</body>
</html>

jalankan http://localhost/larako/login

Selanjutnya,,
Route
web.php
update route
Route::get('/', function () {
    return view('welcome');
})->name('welcome');
-
Route::get('logout','LoginController@logout')->name('logout');
Route::group(['prefix' => 'pegawai', 'middleware' => 'auth:user'], function() {
Route::get('/','PegawaiController@index')->name('pegawai.user');
});

tambah di LoginController
function __construct()
    {
        $this->middleware('guest:user', ['except' => 'logout']);
    }

function logout()
    {
        Auth::guard('user')->logout();
        return redirect()->route('welcome');
    }

Model Users
App/Users 
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Auth\Authenticatable as AuthenticatableTrait;

class Users extends \Eloquent implements Authenticatable
{
    use AuthenticatableTrait;
    protected $table = 'users';
    protected $primaryKey = 'id_user';
    protected $fillable = [
        'name', 'email', 'password', 'level', 'remember_token', 'created_at', 'updated_at'
    ];
}

auth.php
config/auth.php
    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
      
        'user' => [
            'driver' => 'session',
            'provider' => 'user',
            ],


        'api' => [
            'driver' => 'token',
            'provider' => 'users',
            'hash' => false,
        ],
    ],
-------
    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],

        'user' => [
            'driver' => 'eloquent',
            'model' => App\Users::class,
        ],


        // 'users' => [
        //     'driver' => 'database',
        //     'table' => 'users',
        // ],
    ],

Authenticate.php
app/http/middelware/Authenticate.php
protected function redirectTo($request)
    {
        if (! $request->expectsJson()) {
            return route('get.login');
        }
    }

RedirectlAuthenticated.php
app/http/middelware/RedirectlAuthenticated.php
public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::guard($guard)->check()) {
            $route = null;

            switch ($guard) {
                case 'admin':
                    $route = 'pegawai.admin';
                    break;

                // case 'user':
                //     $route = 'pegawai.user';
                //     break;
               
                default:
                    $route = 'welcome';
                    break;
            }

            return redirect()->route($route);

        }

        return $next($request);
    }

Handler.php
app/Exceptions/Handler.php
namespace App\Exceptions;

use Exception;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Illuminate\Auth\AuthenticationException;

class Handler extends ExceptionHandler
{
    /**
     * A list of the exception types that are not reported.
     *
     * @var array
     */
    protected $dontReport = [
        //
    ];

    /**
     * A list of the inputs that are never flashed for validation exceptions.
     *
     * @var array
     */
    protected $dontFlash = [
        'password',
        'password_confirmation',
    ];

    /**
     * Report or log an exception.
     *
     * @param  \Exception  $exception
     * @return void
     */
    public function report(Exception $exception)
    {
        parent::report($exception);
    }

    /**
     * Render an exception into an HTTP response.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Exception  $exception
     * @return \Illuminate\Http\Response
     */
    public function render($request, Exception $exception)
    {
        return parent::render($request, $exception);
    }
  
    /**
     * Convert an authentication exception into an unauthenticated response.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Illuminate\Auth\AuthenticationException  $exception
     * @return \Illuminate\Http\Response
     */
    protected function unauthenticated($request, AuthenticationException $exception)
    {
        if ($request->expectsJson()) {
            return response()->json(['error' => 'Unauthenticated.'], 401);
        }

        $guard = array_get($exception->guards(), 0);

        return redirect()->guest(route('welcome'));
    }

}

jalankan
sedikit demo
oiyahh jangan lupa pada master pegawai tambahkan logout(keluar)

<a href="{{route('logout')}}">Logout</a>
-
Demoo
sedikit penjelasan tentang demo,
ketika kita sudah login, kita bisa ke url master pegawai
tetapi ketika kita, sudah logout/belum login tidak bisa masuk ke master pegawai
-
Sekian dari saya
Assalamu 'alaikum wr wb
Previous
Next Post »
Thanks for your comment