Membuat Aplikasi Authentikasi dengan Ruby and Rails – 1

Berikut ini sedikit tip n trik untuk membuat aplikasi Ruby and Rails (RoR) yang berjalan di platform Linux Ubuntu 13. Masuk ke Terminal:

rails new simple-auth -d postgresql

Maksudnya adalah membuat project baru RoR dengan nama simple-auth dan database postgresql. Jika selesai, nanti di folder /home akan muncul folder simple-auth. Masuk ke folder tersebut dengan mengetik:

cd simple-auth

Di sana anda akan menjumpai folder Gemfile yang harus sedikit diedit untuk mengaktifkan bahasa ruby. Cara mengaktifkannya adalah dengan menghapus symbol “#”.

SImpan dan jangan lupa setiap melakukan perubahan pada file Gem, kita harus melakukan bundle install. Masuk ke terminal, jalankan:

bundle install

Sekarang kita harus melakukan perubahan pada postgresql, yakni pada file database.yml yang terletak di folder Config pada folder aplikasi kita (Simple-Auth). Ganti seluruh user dengan nama superuser postgresql, misalnya csim. Setelah itu jangan lupa menekan tombol simpan ‘save’. (Note: ada tiga yang harus dirubah).

Jangan lupa setiap melakukan perubahan pada configurasi database.yml, lakukan rake:

rake db:create:all

rake db:migrate

Berikutnya kita akan membuat controller dengan nama ‘new’. Rails termasuk framework Model View Controller (MVC). Buat dengan cara mengetik:

rails g controller users new

Akan terbentuk controller dengan nama new. Begitu juga untuk model user, buat:

rails g model user email:string password_hash:string password_salt:string

Lakukan migrate database

rake db:migrate

Cari file UsersController di folder /app/controller. Ekstensinya adalah ‘.rb’. Isi program seperti contoh berikut ini:

Berikutnya masukan kode berikut untuk views pada new.html

  • <h1>Sign Up</h1>
  • <%= form_for @user do |f| %>
  • <% if @user.errors.any? %>
  • <div class=”error_messages”>
  • <h2>Form is invalid</h2>
  • <ul>
  • <% for message in @user.errors.full_messages %>
  • <li><%= message %></li>
  • <% end %>
  • </ul>
  • </div>
  • <% end %>
  • <p>
  • <%= f.label :email %><br />
  • <%= f.text_field :email %>
  • </p>
  • <p>
  • <%= f.label :password %><br />
  • <%= f.password_field :password %>
  • </p>
  • <p>
  • <%= f.label :password_confirmation %><br />
  • <%= f.password_field :password_confirmation %>
  • </p>
  • <p class=”button”><%= f.submit %></p>
  • <% end %>

Untuk masalah enkripsi, kita tinggal memakai bundel yang ada pada file Gem, buka kembali Gemfile, masukan gem “bcrypt-ruby”, :require => “bcrypt”

Jangan lupa, lakukan lagi bundle install setiap kali melakukan perubahan pada Gemfile.

bundle install

Buka file user.rb pada folder /app/models/ dan isikan kode berikut ini:

  • before_save :encrypt_password
  • def self.authenticate(email, password)
  • user = find_by_email(email)
  • if user && user.password_hash == BCrypt::Engine.hash_secret(password, user.password_salt)
  • user
  • else
  • nil
  • end
  • end
  • def encrypt_password
  • if password.present?
  • self.password_salt = BCrypt::Engine.generate_salt
  • self.password_hash = BCrypt::Engine.hash_secret(password, password_salt)
  • end
  • end

Tambahkan pula attribute berikut (dibawah before save):

  • attr_accessor :password
  • before_save :encrypt_password
  • validates_confirmation_of :password
  • validates_presence_of :password, :on => :create
  • validates_presence_of :email
  • validates_uniqueness_of :email

Hal yang berikut ini sangat penting, yaitu routing, di sini kita mengarahkan user ketika menekan tombol tertentu. Tambahkan code ini pada folder route.rb yang terletak di folder /app/models. Sisipkan di bawah get “users/new” tiga baris berikut ini:

Coba jalankan RoR dengan melakukan instruksi di bawah ini:

rails server

Biarkan console seolah-oleh hang, yang tandanya server sedang bekerja. Jika ingin mematikannya tinggal menekan Ctrl-C. Buka browser dan link pada http://localhost/3000

Coba klik Create user, lihat apa yang terjadi. Coba masuk ke database. Apakah sudah tersimpan? Misalnya saya masukan email: rahmadya@yahoo.com

Iklan