ahmadajah03 Fri Apr 2020 2 years ago

Tutorial Auth Login dengan Username atau Email di Laravel 6 atau 7

Mari kita mulai dengan cara login dengan username atau email di laravel 7/6 auth. saya akan memberi Anda solusi sederhana login laravel 7/6 dengan username atau email dalam otentikasi. mudah untuk membuat login auth dengan username dan alamat email di aplikasi laravel 7/6.

Terkadang, kita perlu membuat halaman login dengan username atau alamat email untuk login. itu fungsi hebat jika Anda miliki di situs web Anda karena sangat mudah untuk mengingat siapa pun kepada customer Anda. pelanggan jika lupa email maka dia memiliki satu username. Jadi itu sangat membantu.

Dalam laravel 6, saya akan memberikan bagaimana Anda dapat mengatur untuk login dengan username atau email langkah demi langkah. jadi mari kita ikuti langkah-langkah di bawah ini.

Step 1: Install Laravel 6

pertama-tama kita perlu mendapatkan aplikasi versi Laravel 6 baru menggunakan perintah di bawah ini, Jadi buka terminal ATAU command prompt Anda dan jalankan perintah di bawah ini:

composer create-project --prefer-dist laravel/laravel blog

Step 2: Install Laravel UI

Anda harus mengikuti beberapa langkah untuk membuat auth di aplikasi laravel 6 Anda.

Pertama, Anda perlu menginstal paket laravel/ui seperti di bawah ini:

composer require laravel/ui

Step 3: Generate Auth Scaffold

Di sini, kita perlu membuat auth scaffolding di laravel 6 menggunakan perintah laravel ui. jadi, mari kita hasilkan dengan perintah di bawah ini:

php artisan ui bootstrap --auth

Sekarang Anda perlu menjalankan perintah npm, jika tidak, Anda tidak dapat melihat tata letak login dan register yang lebih baik.

Install NPM:

npm install

Run NPM:

npm run dev

Step 4: Add Username Column

Sekarang tambahkan nama pengguna kolom baru ke tabel pengguna Anda, sehingga Anda dapat dengan mudah memperbarui migrasi Anda seperti di bawah ini.

migration

<?php
  
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
  
class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->string('email');
            $table->string('username')->nullable();
            $table->timestamp('email_verified_at')->nullable();
            $table->boolean('is_admin')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }
  
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('users');
    }
}

Sekarang Anda dapat menjalankan migration

php artisan migrate

Step 5: Update Login View

Laravel telah membuat file blade login standar. kita perlu menambahkan bidang nama pengguna comman di atasnya dan menghapus bidang email. jadi mari kita perbarui seperti di bawah ini:

resources/views/auth/login.blade.php

....
<div class="form-group row">
    <label for="username" class="col-md-4 col-form-label text-md-right">Username Or Email</label>
   
    <div class="col-md-6">
        <input id="username" type="username" class="form-control @error('username') is-invalid @enderror" name="username" value="{{ old('username') }}" required  autofocus>
   
        @error('username')
            <span class="invalid-feedback" role="alert">
                <strong>{{ $message }}</strong>
            </span>
        @enderror
    </div>
</div>
....

Step 6: Overwrite Login method

Sekarang kita harus overwrite login dengan file LoginController. jadi mari kita tambahkan logincontroller seperti di bawah ini:

app/Http/Controllers/Auth/LoginController.php

<?php
  
namespace App\Http\Controllers\Auth;
  
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
  
class LoginController extends Controller
{
  
    use AuthenticatesUsers;
    
    protected $redirectTo = '/home';
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }
  
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function login(Request $request)
    {   
        $input = $request->all();
  
        $this->validate($request, [
            'username' => 'required',
            'password' => 'required',
        ]);
  
        $fieldType = filter_var($request->username, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
        if(auth()->attempt(array($fieldType => $input['username'], 'password' => $input['password'])))
        {
            return redirect()->route('home');
        }else{
            return redirect()->route('login')
                ->with('error','Email-Address And Password Are Wrong.');
        }
          
    }
}

Anda dapat menambahkan beberapa data dummy di tabel user Anda.

Sekarang Anda dapat menjalankan proyek Anda.

Anda akan mendapatkan tata letak halaman login seperti di bawah ini:

Saya harap ini dapat membantu Anda ...

authentication auth laravel 7 laravel 6 laravel