Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Ruby on Rails
Code

Otorisasi dengan Pundit

Difficulty:BeginnerLength:MediumLanguages:

Indonesian (Bahasa Indonesia) translation by Husain Ali Yahya (you can also view the original English article)

Pundit adalah sebuah alat yang mengizinkanmu melarang bagian tertentu dari aplikasi Rails mu untuk otorisasi pengguna. Caranya dengan menyediakan beberapa pembantu padamu.

Dalam tutorial ini, kamu akan membuat sebuah blog yang melarang beberapa bagian seperti membuat, memperbaharui dan menghapus artikel kecuali oleh pengguna yang terotorisasi.

Memulai

Pertama dimulai dengan membuat sebuah aplikasi Rails baru.

Tanda -T memberi tahu Rails untuk membuat aplikasi baru tanpa test suite bawaan. Menjalankan perintah tersebut akan membuat aplikasi Railsmu dan memasan gems bawaan.

Lalu, tambahkan gems berikut ke gemfile mu. Kamu akan menggunakan bootsrap-sass untuk layout aplikasimu, dan Devise akan mengurus otentikasi pengguna.

Jalankan perintah untuk memasang gem

Sekarang ganti nama app/assets/stylesheets/application.css menjadi app/assets/stylesheets/application.scs. Dan tambahkan baris berikut ke bootstrap import.

Buat sebuah partial bernama _navigation.html.erb untuk menjaga kode navigasi; partial harus diletakkan di app/views/layouts. Buat partial tampak seperti di bawah.

Untuk navigasi yang digunakan, kamu perlu merendernya di dalam layout aplikasi. Tweak layout aplikasimu menjadi seperti di bawah.

Membuat User Model

Jalankan perintah untuk memasang Devise.

Sekarang buat User Model mu.

Migrasikan database-mu.

Membuat Article Resources

Jalankan perintah untuk membuat article resource mu.

Ini akan membuat ArticleController dan Article Model. Juga akan membuat views yang diperlukan.

Sekarang migrasikan database-mu menggunakan:

Buka app/views/articles/_form.html.erb dan buat menjadi tampak seperti di bawah ini.

Untuk index file, dia harus tampak seperti ini.

Kode di atas menyusun artikel-artikel di halaman indeks ke dalam format tabel untuk membuatnya lebih mudah ditampilkan.

Buka berkas routes mu dan tambahkan routes untuk resource articles.

Mengintegrasikan Pundit

Tambahkan Pundit gem ke Gemfile mu.

Jalankan perintah untuk memasang.

Integrasikan Pundit dengan aplikasimu dengan menambahkan baris berikut ke ApplicationController mu.

Jalankan generator Pundit

Ini akan membuat folder app/policies yang berisi class dasar dengan policies. Setiap policy adalah class Ruby dasar.

Seperti inilah tampilan dari base class policy.

Membuat Article Policy

Sekarang kamu harus menulis policy mu sendiri. Untuk tutorial ini, kamu ingin untuk hanya mengizinkan pengguna terdaftar untuk membuat artikel baru. Di samping itu, hanya pembuat dari sebuah artikel yang bisa mengubah dan menghapus artikel.

Untuk mencapainya, article policy mu akan tampak seperti ini.

Di atas kita, kita mengizinkan siapaun ( pengguna terdaftar dan tidak terdaftar ) untuk melihat laman indeks. Unbtuk membuat artikel baru, sebuah pengguna harus terdaftar. Kamu menggunakan user.present? untuk mencari tahu apabila pengguna mencoba untuk melakukan aksi yang terdaftar.

Untuk memperbaharui dan menghapus, kamu harus pastikan hanya pembuat artikel yang bisa melakukan aksi tersebut.

Pada tahap ini, kamu perlu membuat sebuah hubungan antara Article dengan model User.

Kamu melakukannya dengan membuat sebuah migrasi baru.

Lalu, migrasikan database-mu dengan menjalankan kode:

Buka model User dan tambahkan baris yang membungkus hubungan.

Model Article-mu harus memiliki ini.

Sekarang kamu harus memperbaharui ArticlesController sehingga ini tersinkron dengan apa yang telah kamu lakukan sejauh ini.

Pada titik ini di aplikasimu, kamu telah sukses mengimplementasikan policy yang akan menghalangi beberapa bagian dari aplikasimu untuk beberapa pengguna.

Kamu bisa menambahkan pesan error standar yang akan tampil kapanpun seorang pengguna tak terdaftar mencoba untuk memasuki halaman terbatas. Untuk melakukannya tambahkan hal berikut ke ApplicationController mu.

Kode ini secara sederhana me-render teks biasa yang akan memberi tahu pengguna bahwa dia tidak terotorisasi untuk melakukan aksi tersebut.

Jalankan:

Untuk menjalankan server Rails, buka browsermu ke https://localhost:3000 untuk melihat yang kamu miliki.

Kesimpulan

Di tutorial ini, kamu telah belajar cara bekerja baik dengan Devise dan Pundit. Kamu bisa membuat policy yang hanya mengizinkan pengguna terotorisasi untuk melihat bagian tertentu dari aplikasi.  Kamu juga telah membuat sebuah pesan error dasar yang tampil ketika pengguna tidak terotorisasi mencoba mengakses bagian terlarang dari aplikasi.

Kamu bisa belajar lebih banyak mengenai Pundit dengan mengecek laman GitHubnya

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.