Membuat sistem login dan registrasi dengan Laravel cukup mudah. Berikut adalah langkah-langkah dasar untuk memulai:
Buat proyek baru Laravel menggunakan alat command line.
Untuk membuat proyek baru Laravel menggunakan alat command line, Anda harus memiliki Composer terinstall pada komputer Anda. Anda dapat mendownload Composer dari situs resmi https://getcomposer.org/download/
Setelah Anda memiliki Composer terinstall, Anda dapat menjalankan perintah berikut di command line untuk membuat proyek baru Laravel:
composer create-project --prefer-dist laravel/laravel nama_proyek
Di mana nama_proyek
adalah nama folder yang akan dibuat untuk proyek baru Anda. Setelah proyek dibuat, Anda dapat masuk ke folder proyek dengan perintah cd nama_proyek
dan menjalankan perintah php artisan serve
untuk menjalankan server development, dan proyek Anda akan tersedia di http://localhost:8000
Buat database dan atur kredensial di file .env.
Untuk membuat database dan mengatur kredensial di file .env pada proyek Laravel, Anda dapat mengikuti langkah-langkah berikut:
- Buat database baru pada server database Anda, misal dengan menggunakan PHPMyAdmin atau MySQL Workbench.
- Buka file .env pada root proyek Laravel Anda, Anda akan menemukan beberapa baris yang berkaitan dengan konfigurasi database.
- Ubah baris ini sesuai dengan kredensial database Anda :
-
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=nama_database DB_USERNAME=username DB_PASSWORD=password
- Ganti
nama_database
,username
, danpassword
sesuai dengan kredensial database Anda. - Simpan perubahan pada file .env
- Kemudian jalankan perintah
php artisan migrate
pada command line untuk mengeksekusi migration yang sudah dibuat sebelumnya dan membuat tabel-tabel yang diperlukan pada database yang baru saja dibuat.
Buat file migrasi untuk membuat tabel yang diperlukan untuk sistem otentikasi user.
Untuk membuat file migrasi yang akan digunakan untuk membuat tabel yang diperlukan untuk sistem otentikasi user pada proyek Laravel, Anda dapat mengikuti langkah-langkah berikut:
- Buka command line pada root proyek Laravel Anda.
- Jalankan perintah
php artisan make:migration create_users_table
untuk membuat file migrasi baru yang akan digunakan untuk membuat tabel users. (create_users_table adalah contoh nama migration, Anda dapat menggantinya dengan nama yang Anda inginkan. - File migrasi baru akan dibuat di folder
database/migrations
pada proyek Anda. Buka file tersebut dan Anda akan melihat 2 method yaituup()
dandown()
. - Tambahkan kode SQL yang diperlukan untuk membuat tabel users pada method
up()
. Misalnya:public function up() { Schema::create('users', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email')->unique(); $table->string('password'); $table->rememberToken(); $table->timestamps(); }); }
- Tambahkan kode SQL yang diperlukan untuk menghapus tabel users pada method
down()
. Misalnya:
public function down() { Schema::dropIfExists('users'); }
- Kemudian jalankan perintah
php artisan migrate
pada command line untuk mengeksekusi migration yang sudah dibuat dan membuat tabel 'users' pada database Anda.
Buat controller untuk menangani logika registrasi dan login.
- Buka command line pada root proyek Laravel Anda.
- Jalankan perintah
php artisan make:controller AuthController
untuk membuat controller baru yang akan digunakan untuk autentikasi. (AuthController adalah contoh nama controller, Anda dapat menggantinya dengan nama yang Anda inginkan) - File controller baru akan dibuat di folder
app/Http/Controllers
pada proyek Anda. Buka file tersebut dan Anda akan melihat class dengan nama yang sama dengan yang Anda buat. - Tambahkan method yang diperlukan untuk menangani logika registrasi dan login pada controller tersebut. Misalnya :
public function register(Request $request) { //validation $validatedData = $request->validate([ 'name' => 'required|string', 'email' => 'required|string|email|unique:users', 'password' => 'required|string|confirmed' ]); $user = new User([ 'name' => $validatedData['name'], 'email' => $validatedData['email'], 'password' => bcrypt($validatedData['password']), ]); $user->save(); return response()->json([ 'message' => 'Successfully created user!' ], 201); } public function login(Request $request) { $credentials = $request->only(['email', 'password']); if (!Auth::attempt($credentials)) { return response()->json([ 'message' => 'Unauthorized' ], 401); } $user = $request->user(); $tokenResult = $user->createToken('Personal Access Token'); $token = $tokenResult->token; $token->save(); return response()->json([ 'access_token' => $tokenResult->accessToken, 'token_type' => 'Bearer', 'expires_at' => Carbon::parse( $tokenResult->token->expires_at )->toDateTimeString() ]); }
- Anda juga harus menambahkan use statement pada controller untuk class yang digunakan pada method, misalnya :
use App\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth;
- Kemudian Anda harus menambahkan routing pada web.php atau api.php sesuai dengan kebutuhan anda, untuk mengarahkan request yang sesuai ke method yang diinginkan pada controller tersebut.
Buat tampilan untuk form registrasi dan login
Untuk membuat tampilan form registrasi dan login pada proyek Laravel, Anda dapat mengikuti langkah-langkah berikut:
- Buat folder baru di dalam folder
resources/views
dengan namaauth
. - Buat file baru dengan nama
register.blade.php
danlogin.blade.php
di dalam folderauth
yang baru dibuat. -
Tambahkan kode HTML yang diperlukan untuk membuat form registrasi pada file
register.blade.php
. Misalnya :<form method="POST" action="{{ route('register') }}"> @csrf <label for="name">Name</label> <input id="name" type="text" name="name" required> <label for="email">Email</label> <input id="email" type="email" name="email" required> <label for="password">Password</label> <input id="password" type="password" name="password" required> <label for="password-confirm">Confirm Password</label> <input id="password-confirm" type="password" name="password_confirmation" required> <button type="submit">Register</button> </form>
- Tambahkan kode HTML yang diperlukan untuk membuat form login pada file
login.blade.php
. Misalnya :
<form method="POST" action="{{ route('login') }}"> @csrf <label for="email">Email</label> <input id="email" type="email" name="email" required> <label for="password">Password</label> <input id="password" type="password" name="password" required> <button type="submit">Login</button> </form>
Tambahkan rute ke metode controller di file web.php.
Untuk menambahkan rute ke metode controller pada file web.php pada proyek Laravel, Anda dapat mengikuti langkah-langkah berikut:
- Buka file
routes/web.php
pada proyek Laravel Anda. - Tambahkan kode berikut untuk mengarahkan request ke method register pada controller AuthController :
Route::get('login', 'AuthController@login')->name('login'); Route::post('login', 'AuthController@login');
- Anda juga dapat menambahkan route untuk logout dan lain-lain yang diperlukan untuk autentikasi.
- Kemudian simpan perubahan pada file web.php, selanjutnya ketika aplikasi menerima request yang sesuai dengan route yang ditambahkan, maka akan mengarahkan request tersebut ke method yang ditentukan pada controller yang ditentukan.
Implementasikan validasi untuk form registrasi dan login.
Untuk mengimplementasikan validasi pada form registrasi dan login pada proyek Laravel, Anda dapat mengikuti langkah-langkah berikut:
- Buka controller yang digunakan untuk menangani logika registrasi dan login, misalnya
AuthController
. - Pada method
register
tambahkan kode validasi sebelum menyimpan data ke database. Misalnya :public function register(Request $request) { $validatedData = $request->validate([ 'name' => 'required|string', 'email' => 'required|string|email|unique:users', 'password' => 'required|string|confirmed' ]); //Code for storing data }
- Pada method
login
tambahkan kode validasi sebelum melakukan proses login. Misalnya :
public function login(Request $request) { $validatedData = $request->validate([ 'email' => 'required|string|email', 'password' => 'required|string' ]);
Gunakan facade Auth bawaan Laravel untuk menangani proses otentikasi.
Laravel menyediakan facade Auth
yang bisa digunakan untuk menangani proses otentikasi. Anda dapat menggunakan facade Auth
pada controller yang digunakan untuk menangani logika registrasi dan login, misalnya AuthController
.
Untuk menangani proses login, Anda dapat menggunakan method attempt
pada facade Auth
. Method ini akan mengecek apakah kredensial yang diberikan (email dan password) cocok dengan data yang ada di database. Jika cocok, maka user akan di-login dan method akan mengembalikan nilai true. Jika tidak cocok, maka method akan mengembalikan nilai false.
Contoh :
public function login(Request $request)
{
$credentials = $request->only(['email', 'password']);
if (Auth::attempt($credentials)) {
//login success
//generate token
} else {
//login failed
}
}
Untuk menangani proses logout, Anda dapat menggunakan method logout
pada facade Auth
. Method ini akan menghapus sesi login yang ada.
Contoh :
public function logout()
{
Auth::logout();
//redirect to login page
}
Anda juga dapat menggunakan method-method lain yang disediakan oleh facade Auth
untuk menangani proses otentikasi seperti user
, check
, guest
, dll.
Contoh :
public function profile()
{
if (Auth::check()) {
//user is logged in
$user = Auth::user();
//show profile view
} else {
//user is not logged in
//redirect to login page
}
}
Itu adalah cara dasar untuk menggunakan facade Auth
bawaan Laravel untuk menangani proses otentikasi pada proyek Laravel. Pastikan Anda telah menambahkan use statement untuk class Auth pada controller Anda sebelum menggunakan facade Auth.
use Illuminate\Support\Facades\Auth;
Ingat juga untuk mengatur konfigurasi autentikasi pada file config/auth.php
sesuai dengan kebutuhan aplikasi Anda seperti model yang digunakan untuk autentikasi dan kolom yang digunakan untuk autentikasi.
Gunakan middleware untuk melindungi rute yang hanya dapat diakses oleh user yang sudah login.
Laravel menyediakan fitur middleware untuk melindungi rute yang hanya dapat diakses oleh user yang sudah login. Anda dapat menggunakan middleware auth
bawaan Laravel untuk melindungi rute yang hanya dapat diakses oleh user yang sudah login.
Untuk menambahkan middleware auth
pada rute tertentu, Anda dapat menambahkan middleware pada definisi rute.
Contoh :
Route::middleware(['auth'])->group(function () {
Route::get('/dashboard', 'DashboardController@index');
Route::get('/profile', 'UserController@profile');
// other routes that should be protected
});
Atau Anda dapat menambahkan middleware pada setiap rute yang ingin dilindungi, contohnya seperti ini:
Route::get('/dashboard', 'DashboardController@index')->middleware('auth');
Route::get('/profile', 'UserController@profile')->middleware('auth');
Jika user tidak login, maka Laravel akan mengarahkan user ke halaman login yang telah ditentukan dalam konfigurasi authentication. Anda juga dapat menentukan redirect yang berbeda dengan mengatur $redirectTo
pada file app/Http/Middleware/Authenticate.php
Selain itu, Anda juga dapat membuat middleware sendiri dengan menjalankan perintah php artisan make:middleware MyMiddleware
Anda dapat menambahkan middleware yang Anda buat ke $routeMiddleware
pada file app/Http/Kernel.php
sehingga Anda dapat menggunakannya pada rute yang Anda inginkan.
Contoh :
protected $routeMiddleware = [
'mymiddleware' => \App\Http\Middleware\MyMiddleware::class,
// other middlewares
];
Kemudian Anda dapat menambahkan middleware yang baru dibuat pada rute yang ingin dilindungi, seperti ini:
Route::get('/dashboard', 'DashboardController@index')->middleware('mymiddleware');
Selain itu, Anda juga dapat menambahkan middleware pada controller dengan menambahkan anotasi middleware pada class controller.
Contoh :
class DashboardController extends Controller
{
/**
* Middleware to protect this controller
*/
public function __construct()
{
$this->middleware(['auth', 'mymiddleware']);
}
// other methods
}
Uji proses registrasi dan login untuk memastikan semuanya berjalan sebagaimana mestinya.
Setelah Anda selesai mengimplementasikan proses registrasi dan login pada proyek Laravel, Anda dapat melakukan uji coba untuk memastikan bahwa proses tersebut berjalan sebagaimana mestinya.
Untuk melakukan uji coba, Anda dapat mengikuti langkah-langkah berikut:
- Buka aplikasi Anda pada browser dan akses halaman registrasi.
- Isi form registrasi dengan data yang valid dan klik tombol "Register"
- Pastikan data yang dimasukkan tersimpan dengan benar di database dan user yang baru terdaftar dapat login dengan email dan password yang digunakan saat registrasi.
- Buka halaman login dan masukkan email dan password yang telah digunakan saat registrasi.
- Pastikan proses login berhasil dan user yang login dapat mengakses halaman yang dilindungi oleh middleware auth.
- Uji coba logout dan pastikan sesi login terhapus dan user tidak dapat mengakses halaman yang dilindungi setelah logout.
- Uji coba untuk mencoba login dengan email dan password yang salah, pastikan proses login gagal dan user tidak dapat login.
Tambahkan fitur tambahan seperti lupa password, verifikasi email, atau login sosial jika diinginkan.
Untuk menambahkan fitur tambahan seperti lupa password, verifikasi email, atau login sosial pada proyek Laravel, Anda dapat mengikuti langkah-langkah berikut:
- Lupa Password: Laravel menyediakan fitur built-in untuk reset password. Anda dapat menambahkan link "Lupa Password" pada halaman login dan mengarahkannya ke halaman yang menangani proses reset password. Anda dapat mengikuti tutorial dari laravel untuk mengimplementasikan fitur ini.
- Verifikasi Email: Anda dapat menambahkan fitur verifikasi email pada saat registrasi dengan mengirimkan email verifikasi ke alamat email yang digunakan saat registrasi. Anda dapat mengikuti tutorial dari laravel untuk mengimplementasikan fitur ini.
- Login Sosial: Anda dapat menambahkan fitur login sosial dengan menggunakan package eksternal seperti socialite dari Laravel. Package ini akan mengijinkan Anda untuk menambahkan fitur login sosial seperti Facebook, Google, Twitter, dll. Anda dapat mengikuti tutorial dari laravel untuk mengimplementasikan fitur ini.
Pastikan Anda mengikuti petunjuk yang benar dan memahami konfigurasi yang diperlukan untuk mengimplementasikan fitur tambahan tersebut.
Selain itu, Anda juga perlu memastikan bahwa fitur-fitur tambahan tersebut diintegrasikan dengan benar dengan sistem otentikasi yang sudah ada. Misalnya, setelah user berhasil mereset password, maka user harus diharuskan untuk login kembali. Atau setelah user berhasil melakukan verifikasi email, maka status emailnya harus diupdate di database.
Sebagai tambahan, Anda juga dapat menambahkan fitur-fitur tambahan seperti 2FA (Two-Factor Authentication), CAPTCHA atau reCAPTCHA untuk meningkatkan keamanan sistem otentikasi Anda.
Itu adalah beberapa fitur tambahan yang dapat Anda tambahkan pada proyek Laravel Anda untuk meningkatkan keamanan dan kenyamanan user. Ingatlah untuk selalu mengevaluasi dan memperbarui sistem otentikasi Anda sesuai dengan perkembangan teknologi dan kebutuhan aplikasi Anda.