Study
Ruby on Rails

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.

Editor Latihan

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.