Kolom Password Dalam Autentikasi, Bisakah Diganti?
Artikel ini untuk Laravel 5.0, jika Anda memakai Laravel 5.1 silakan baca tutorial Memodifikasi Default Login Laravel 5.1.
Secara default, Laravel 5 sudah menyediakan boilerplate autentikasi yang bisa langsung dipakai. Namun, Laravel berasumsi bahwa tabel yang digunakan untuk autentikasi adalah tabel users
yang didalamnya terdapat dua buah kolom: email
dan password
. Dua field inilah yang dijadikan inputan ketika login ataupun registrasi.
Jon Bertanya
Apakah kita bisa mengganti nama kolom yang digunakan, misalnya dari password
menjadi sandi
?
Dodo Menjawab
Bisa Aja.
Kolom password digunakan baik ketika registrasi ataupun login. Oleh karena itu, kita harus memodifikasi file-file yang digunakan untuk masing-masing proses tersebut.
Registrasi
Langkah 1. Ubah View
Buka file resources/views/auth/register.blade.php
. Disitu terdapat dua buah tag input
, yaitu untuk password dan password_confirmasion. Ubah atribut name
masing-masing menjadi "sandi" dan "sandi_confirmation":
...
<div class="form-group">
<label class="col-md-4 control-label">Password</label>
<div class="col-md-6">
<input type="password" class="form-control" name="sandi">
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label">Confirm Password</label>
<div class="col-md-6">
<input type="password" class="form-control" name="sandi_confirmation">
</div>
</div>
...
Langkah 2. Ubah Service Registrar
Buka file app/Services/Registrar.php
, disitu bisa kita dapati "password" tertulis di dua tempat. Ganti dua-duanya dengan "sandi".
<?php namespace App\Services;
use App\User;
use Validator;
use Illuminate\Contracts\Auth\Registrar as RegistrarContract;
class Registrar implements RegistrarContract {
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
public function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
// 'password' => 'required|confirmed|min:6',
'sandi' => 'required|confirmed|min:6',
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return User
*/
public function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
// 'password' => bcrypt($data['password']),
'sandi' => bcrypt($data['sandi']),
]);
}
}
Langkah 3. Ubah Model User
Buka file app/User.php
, lakukan perubahan di bagian $fillable
, ganti "password" menjadi "sandi":
protected $fillable = ['name', 'email', 'sandi'];
Selesai, Anda bisa mencoba kembali proses registrasi bawaan Laravel dan membuktikan sendiri apakah langkah-langkah di atas sudah benar. Cukup 3 langkah. Gampang kan?
Login
Langkah 1. Ubah Model User
Buka kembali file app/User.php
, tambahkan (atau lebih tepatnya override) fungsi getAuthPassword
:
public function getAuthPassword()
{
return $this->sandi; // default return $this->password;
}
Langkah 2. Berdoa
Silakan berdoa, dilanjutkan dengan melakukan pengujian login menggunakan data hasil registrasi sebelumnya. Berhasilkah?