2013-02-01

Ask2Answer : User Permision


beberapa bertanya pada forum php, bagaimana membuat user permision. Sejujurnya teorinya mudah, kita memberikan hak yang layak pada user bersangkutan agar dapat akses tertentu. Tapi ternyata tidak semudah dalam prakteknya. Hal ini dikarenakan kita mengalami kebingungan akan hak yang sebenarnya. Dalam tulisan ini saya akan membahas 2 cara yang mana terbilang mudah dan juga terbilang sulit.
Cara mudah bukan berarti cara terbaik, karena web/aplikasi yang kita buat ini tak selalu bersifat statis. Maksud disini statis adalah tidak mengalami perkembangan! baik perkembangan secara langsung maupun tidak langsung. Dari point ini mari membahas perkembangan aplikasi yang wajar terjadi.

Perkembangan

sebuah aplikasi mengalami perkembangan dari sisi data, template dan juga sistem. Untuk template sebenarnya tidak terlalu mempengaruhi user permision, tetapi beberapa situs memiliki semacam ketentuan yang mengharuskan membutuhkan user permision untuk merubah template yang ada.

Dari sisi sistem biasa berhubungan dengan data, dimana tak langsung akan membahas topik CRUD yang berada di topik sebelum ini. Silakan baca CRUD kembali jika ada waktu. Dari segi CRUD inilah sebenarnya konsep user Permision dibutuhkan. Untuk lebih jelas mari pecah kegiatan untuk merubah data (template di anggap data) dan juga tampilan yang didapat dan diterima dalam bagian:
  • input = create
  • edit = update
  • membaca = read
  • delete = hapus
  • lain-lain = other
secara umum user permision berhubungan atas Input, edit dan update. View/Read biasanya terkait tak langsung.

DASAR USER PERMISION

Seperti yang diketahui, user permision dibuat untuk membatasi user. Namun pembatasan itulah yang perlu anda tentukan. Maksudnya begini, ada  user yang hanya boleh input saja tapi tidak boleh edit/hapus. Ada yang mampu hapus dan lain-lain. Secara umum sub bagian untuk hak akses adalah
  • user
  • sistem
  • lain-lain.
Lain-lain disini akan lebih mudah bila kucontohkan kita membuat program tentang penjualan. Dimana lain-lainnya itu adalah
  • penjualan
  • pembelian
  • barang
  • produsen
  • dan banyak lainnya
setiap sub bagian memiliki bagian seperti CRUD yang dibahas di atas. Namun dalam proses sederhana, biasanya kita hanya membuat akses sesuai dengan sub bagiannya. seperti moderator penjualan,  moderator pembelian dan lain-lain. Namun sejujurnya ini adalah nama, didalam dari nama ini terdapat permision-permision yang merupakan gabungan bagian dan sub bagian seperti
  • tambah user
  • tambah penjualan
  • tambah pembelian 
  • dan lain-lain
Dari penjelasan di atas sebenarnya kita mendapatkan 2 metode user permision yaitu memberikan akses sesuai titelnya (moderator) atau memberikan sesuai sub bagiannya (tambah user).. Bahkan ada yang memberikan keduanya.. Tetapi sesuaikan dengan kebutuhan anda.

CARA MENJALANKAN AKSES

Cara pertama sebenarnya lebih mudah dari sisi user, dimana kita tinggal memberikan titelnya pada user tertentu dan dia dapat bergerak sesuai titelnya. Tetapi terkadang dia butuh akses/kemampuan lain!! Tentu saja cara ketiga yaitu menggabungkan dengan cara kedua adalah solusinya. Mari bahas cara pertama, cara ini saya ikuti dari cms phpBB (forum)

Didalam phpBB, kita dapat membuat moderator. Namun kita juga bisa membuat moderator lainnya dimana moderator lainnya tersebut memiliki akses yang mungkin lebih banyak atau sedikit dibandingkan moderator bawaan phpBB. Di sini, moderator (yang kita buat atau edit), ditentukan apa saja hak aksesnya. Nantinya user yang memakai moderator akan memiliki hak akses tersebut. Namun cara itu lebih condong terlihat seperti cara ketiga. Jadi nanti saya akan jelaskan lebih lengkap cara ketiga.

Cara pertama sebenarnya lebih kepada penamaan. Dalam program akses melihat dari penamaan hak yang sedang aktif, sebagai contoh yang aktif adalah moderator maka bila halamannya memang bisa di masuki moderator maka proses dapat berjalan.. Bila tidak maka ditolak! Hal yang menyulitkan bila program yang kita buat menjadi komplex. 
Cara pertama ini tidak membutuhkan table yang rumit, bahkan permision dapat digabung di table user, tetapi bila ingin rapi pisahkan dengan table user. Kekurangan cara ini terletak pada kemungkinan ada hak yang tak seharusnya dimiliki malah bisa masuk.
user - user_role

Cara kedua adalah cara dimana kita memberikan hak secara individu. Maksud disini adalah kita tentukan apa aja hak akses si user! Disini kita akan berhadapan dengan banyak checkbox (update user dan lain-lain) dan table yang memuat banyak data! Title seperti moderator hanya nama namun kendali permisionnya sendiri berada di table permision bukan pada nama.
Cara kedua ini tidaklah sulit karena kita sudah memakai cara di atas yang mana user dan role dipisah. Perbedaannya sebenarnya pada relasinya yaitu one to many! karena usernya 1 bisa memiliki 2- lebih rule/permision. Kekurangan cara ini adalah terlalu sensitif dan pemborosan kode. Namun bila kita sering memakai, kita sudah tahu selanya.

Cara ketiga adalah gabungan di atas. jadi selain user memiliki role (konsep 1), dia juga memiliki permision (konsep 2). Role sendiri memiliki permision, jadi dia memiliki default permision. Kemudian akan di tambah dengan isi  permision cara ke 2. 
Kerepotan disini hanya terlihat pada pemula bukan pada tingkat menengah. Karena biasanya tingkat menengah sudah memiliki tehnik yang lebih tepat

Kebingungan akan wajar terjadi, tetapi cara ini untuk anda agar lebih membuka diri. Bila anda pemula lakukan cara pertama dan pilih cara terbaik saat anda menguasainya.

Tidak ada komentar: