Autentikasi Dasar
Penjelasan
Rails menyediakan `has_secure_password` bawaan (butuh gem `bcrypt`) untuk autentikasi sederhana — cukup tambahkan kolom `password_digest` di tabel `users`, panggil `has_secure_password` di model, dan Rails otomatis menyediakan method `authenticate(password)` serta validasi password. Untuk kebutuhan autentikasi yang lebih lengkap (reset password, konfirmasi email, dsb), komunitas Rails umumnya memakai gem `Devise` yang menyediakan semua fitur itu out-of-the-box tanpa kamu menulis ulang dari nol — konsepnya tetap sama, hanya lebih banyak fitur siap pakai.
Contoh Konsep
# Gemfile
# gem "bcrypt", "~> 3.1.7"
# app/models/user.rb
class User < ApplicationRecord
has_secure_password
validates :email, presence: true, uniqueness: true
end
# di controller sessions
def create
user = User.find_by(email: params[:email])
if user&.authenticate(params[:password])
session[:user_id] = user.id
redirect_to root_path, notice: "Login berhasil"
else
flash.now[:alert] = "Email atau password salah"
render :new
end
end
Praktikum
Lengkapi model `User` agar memakai `has_secure_password` untuk autentikasi.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Jangan pernah menyimpan password dalam bentuk plain text — `has_secure_password` otomatis melakukan hashing lewat bcrypt sebelum disimpan ke kolom `password_digest`, kamu tidak perlu menulis logic hashing manual.