Masino Sinaga

Web Development and PHPMaker

Anda di sini: Beranda / PHPMaker / Beginilah PHPMaker Menangani Keamanan Level Pengguna Secara Dinamis
Mudahnya Mengambil Nilai Variabel dari Javascript ke Kode PHP di PHPMaker
Wow, Keren! Masino Extensions Sekarang Sudah Mendukung Bootstrap Flat

Beginilah PHPMaker Menangani Keamanan Level Pengguna Secara Dinamis

Sab, 19 Maret 2016 oleh Masino Sinaga 30 Komentar

Ada yang bilang: Tak kenal maka tak sayang. Lantas, kalau sudah kenal apakah menjadi semakin sayang? Hehe, jangan berpikiran negatif dulu ya. Yang saya maksud di sini adalah, jika Anda belum mengenal PHPMaker, biasanya Anda tidak akan mau; atau bahkan; tidak akan pernah menggunakan PHPMaker. Tapi coba jika Anda sudah mengenal dan semakin mendalami PHPMaker, maka perhatikan dan rasakan sendiri apa yang akan terjadi. Ahaaa! Itulah maksudnya.

Akhir-akhir ini saya semakin banyak menerima komentar pada beberapa artikel di situs saya ini. Ada yang bertanya, ada yang menyatakan kekagumannya, dan ada juga yang semakin tertarik menggunakan PHPMaker. Syukurlah kalau begitu. Berarti tujuan saya memperkenalkan PHPMaker kepada para Web Developer melalui situs ini sudah membuahkan hasil.

Saya hanya kasihan saja melihat Web Developer yang jika selama ini membangun Aplikasi Web tapi dilakukan dengan cara-cara yang kurang efektif. Menghabiskan waktu yang lama di depan komputer hanya untuk melakukan pekerjaan teknis yang sebenarnya bisa diatasi jika menggunakan tools tertentu.

Contoh, jika Anda membangun Aplikasi Web dengan cara-cara manual dan masih konvensional, seberapa besar usaha Anda untuk menangani keamanan aplikasi secara dinamis? Belum lagi dengan faktor-faktor penting lainnya yang harus Anda perhatikan.

Salah satu dari sekian banyaknya pembaca situs saya, bertanya seperti pada komentar ini. Cukup bagus pertanyaannya.

Setelah saya pikir-pikir, biarlah pertanyaan itu saya jawab melalui artikel ini. Karena yang ditanyakan itu memang selama ini jarang atau bahkan belum pernah ada yang membahasnya. Toh yang lain juga bisa sekaligus belajar bersama. Iya kan?

Jika Anda pernah membaca topik Tutorial – Advanced Security – Dynamic User Level Security melalui menu Help PHPMaker, maka seharusnya Anda sudah mengetahui bahwa PHPMaker memiliki 2 tipe keamanan Level Pengguna. Pertama disebut dengan Static User Levels, dan yang Kedua disebut dengan Dynamic User Levels.

Jika menggunakan tipe Static User Levels, maka Level Pengguna dan Hak Akses didefinisikan di dalam project dan Level Pengguna tidak untuk diubah setelah file-file script dibangkitkan oleh PHPMaker. Namanya juga statis.

Jika menggunakan tipe Dynamic User Levels, maka Level Pengguna dan Hak Akses didefinisikan di dalam 2 buah table di Database. Level Pengguna masih dapat diubah setelah file-file script dibangkitkan oleh PHPMaker. Itulah mengapa disebut dinamis.

Dua buah table yang terlibat untuk Dynamic User Levels tersebut adalah table User Levels dan User Level Permissions. Table pertama tempat kita mendefinisikan Level Pengguna. Sedangkan table kedua tempat kita mendefinisikan Permissions atau Hak Akses.

Kedua table tersebut memiliki relasi Master/Detail. Table User Levels sebagai master, dan table User Level Permissions sebagai detail-nya. Itu artinya, satu Level Pengguna dapat memiliki satu atau beberapa Hak Akses terhadap object table yang terdapat di PHPMaker.

Setelah Anda membaca topik tutorial di atas tadi, seharusnya Anda tidak akan mengalami kesulitan lagi untuk mempelajari dan memahami bagaimana cara mengimplementasikan Dynamic User Levels ke Aplikasi Web yang dihasilkan oleh PHPMaker. Mengapa? Karena pada tutorial itu sudah diuraikan dengan sangat jelas dan lengkap.

Mungkin di antara Anda selama ini ada juga yang memiliki pertanyaan yang sama dengan pembaca situs saya di atas tadi. Anda belum paham apa arti nilai yang tersimpan dalam field Permission pada table User Level Permissions tadi.

Jika Anda masih penasaran apa maksud nilai di field tersebut, maka nilai itu sebenarnya adalah hasil penjumlahan dari beberapa nilai konstanta Hak Akses yang sudah didefinisikan oleh PHPMaker dalam file ewcfg12.php (jika Anda menggunakan PHPMaker 12), yaitu:

// User level constants
define("EW_ALLOW_ADD", 1, TRUE); // Add
define("EW_ALLOW_DELETE", 2, TRUE); // Delete
define("EW_ALLOW_EDIT", 4, TRUE); // Edit
@define("EW_ALLOW_LIST", 8, TRUE); // List
if (defined("EW_USER_LEVEL_COMPAT")) {
	define("EW_ALLOW_VIEW", 8, TRUE); // View
	define("EW_ALLOW_SEARCH", 8, TRUE); // Search
} else {
	define("EW_ALLOW_VIEW", 32, TRUE); // View
	define("EW_ALLOW_SEARCH", 64, TRUE); // Search
}
@define("EW_ALLOW_REPORT", 8, TRUE); // Report
@define("EW_ALLOW_ADMIN", 16, TRUE); // Admin

Seperti yang Anda lihat dari kode barusan, setiap Hak Akses diwakili oleh sebuah konstanta yang memiliki nilai yang berbeda antara satu dengan lainnya. Hak Akses untuk menambah data di suatu table memiliki nilai 1 dan diwakili oleh konstanta EW_ALLOW_ADD, Hak Akses untuk menghapus data di suatu table memiliki nilai 2 dan diwakili oleh konstanta EW_ALLOW_DELETE, demikian dan seterusnya.

Jadi, jika misalnya di table User Level Permissions tadi Anda melihat nilai pada field Permissions adalah 8, maka itu artinya Hak Akses untuk table pada field TableName dan Level Pengguna pada field UserLevelID hanya bisa menampilkan data di halaman List. Hak Akses seperti untuk menambah, mengubah, menghapus, mencari, dan seterusnya tidak diberikan untuk Level Pengguna tersebut.

Mari kita lihat contoh lainnya. Jika nilai di field Permissions tadi adalah 104 untuk suatu table, maka itu artinya Level Pengguna itu hanya dapat menampilkan record pada halaman List yaitu EW_ALLOW_LIST = 8, dapat menampilkan satu record per halaman yaitu EW_ALLOW_VIEW = 32, dan dapat mencari data melalui Pencarian Lanjutan yaitu EW_ALLOW_SEARCH = 64. Hasil penjumlahan ketiganya adalah 104 (8 + 32 + 64).

Oke, mungkin di antara Anda ada yang bertanya lagi seperti ini. Dari definisi konstanta di atas tadi, mengapa ada kondisi seperti di bawah ini:

if (defined("EW_USER_LEVEL_COMPAT")) {
	define("EW_ALLOW_VIEW", 8, TRUE); // View
	define("EW_ALLOW_SEARCH", 8, TRUE); // Search
} else {
	define("EW_ALLOW_VIEW", 32, TRUE); // View
	define("EW_ALLOW_SEARCH", 64, TRUE); // Search
}

Nah, itu artinya, jika konstanta EW_USER_LEVEL_COMPAT sebelumnya didefinisikan, maka Hak Akses View dan Search masing-masing bernilai 8. Sebaliknya, jika konstanta EW_USER_LEVEL_COMPAT itu tidak didefinisikan, maka Hak Akses View dan Search masing-masing bernilai 32 dan 64, seperti contoh di atas tadi.

Dengan kata lain, kondisi di blok else di atas itu akan dieksekusi oleh sistem, jika pilihan pengaturan Separate permissions for List/View/Search yang terdapat pada menu Tools -> Advanced Settings dalam keadaan aktif (enabled). Sampai di sini sudah paham maksud dari arti pendefinisian konstanta EW_USER_LEVEL_COMPAT di atas, ‘kan?

Kesimpulannya, nilai pada field Permissions adalah nilai hasil penjumlahan Hak Akses (Permissions) mana saja yang didefinisikan oleh user Super Admin terhadap suatu table untuk Level Pengguna tertentu. Tentu, Anda tidak perlu pusing memikirkan bagaimana cara mengekstrak kembali nilai ini sehingga sistem bisa mengenali Hak Akses apa saja yang diberikan untuk Table dan Level Pengguna tertentu.

Biarkan PHPMaker yang menanganinya untuk Anda. Di situlah smart dan pintarnya PHPMaker. Sebagai Web Developer, Anda hanya cukup perlu berkonsentrasi untuk menerapkan proses bisnis ke dalam Aplikasi Web yang dihasilkan oleh PHPMaker itu. Selebihnya untuk urusan teknis yang sering digunakan di Aplikasi Web, serahkan saja ke PHPMaker!

Nah, supaya nilai pada field Permissions tadi bisa disimpan ke Database, tentu saja harus dilakukan dari halaman userpriv.php pada Aplikasi Web yang sudah dibangkitkan oleh PHPMaker. Jadi, bukan dilakukan dari dalam project PHPMaker, seperti yang Anda lakukan jika menggunakan tipe Static User Levels.

Dan jangan sekali-kali melakukannya secara manual dengan menambahkan atau mengubah langsung nilai tersebut ke Database. Karena jika Anda salah menentukan nilainya, maka bisa menyebabkan salahnya Hak Akses yang diberikan untuk Level Pengguna dan Table terkait.

Jadi, sekali lagi… mengapa disebut dengan Dynamic User Levels? Karena Level Pengguna ini bisa didefinisikan atau diubah secara dinamis melalui antar muka Aplikasi Web yang sudah dihasilkan oleh PHPMaker.

Bagaimana? PHPMaker benar-benar keren habis, ‘kan? Hehehe… 🙂

Ditempatkan di bawah: PHPMaker Ditag dengan:Belajar PHPMaker, Dynamic User Level, PHPMaker Indonesia, Security Settings, Tutorial PHPMaker

Masino Sinaga

Web Developer pengguna PHPMaker untuk membangun Aplikasi Web sejak tahun 2004. Sampai sekarang masih aktif dan rajin membagikan pengalamannya menggunakan PHPMaker melalui situs masinosinaga.com, ilovephpmaker.com, dan phpmakerprojects.com.

Mudahnya Mengambil Nilai Variabel dari Javascript ke Kode PHP di PHPMaker
Wow, Keren! Masino Extensions Sekarang Sudah Mendukung Bootstrap Flat

Komentar

  1. karas candra mengatakan

    Sen, 28 Maret 2016 pada 1:37 pm

    Mas, q baru di dunia design web, akhir-akhir ini yg aku pelajari tentang yii2 advanced, itu pun belum keseleruhan bisa menguasai, tapi setelah beberapa artikel di blog ini saya baca, saya merasa ada sesuatu yang baru dalam design web, dan itu mengarah ke rancangan yang lebih mudah dan tetap efisie, saya berterimakasih sekali atas informasinya, dan ada pertannya di hati yg mengganjal karna saya rasa saya mulai tertarik dengan PHP Maker dan PHP Report Maker, nah yg mau saya tanyakan :

    1. Aplikasi apa saja yg harus saya persiapkan (syukur-syukur kalau di kasih link) hehehe
    2. Untuk tutorial, adakah rujukan yg bisa saya pelajari terlebih dahulu?

    terimkasih sebelumnya 😀

    Balas
    • Masino Sinaga mengatakan

      Sen, 28 Maret 2016 pada 1:45 pm

      1. Yang jelas ya aplikasi PHPMaker itu sendiri, hehehe… Silahkan download dari website resmi PHPMaker.

      2. Tutorial dan rujukan bisa Anda baca dan pelajari dari menu Help di dalam aplikasi PHPMaker.

      Sama-sama, dan selamat belajar.

      Balas
  2. CotezSka mengatakan

    Sel, 12 April 2016 pada 12:31 pm

    phpmaker bisa membuat software gis tidak pak? 🙂

    Balas
    • Masino Sinaga mengatakan

      Sel, 12 April 2016 pada 1:03 pm

      Bisa.

      Balas
  3. faisal mengatakan

    Sel, 6 September 2016 pada 12:35 pm

    maaf pak…kalo php maker bisa buat online shop gak..??

    Balas
    • Masino Sinaga mengatakan

      Sel, 6 September 2016 pada 1:53 pm

      Bisa. Gunakan fitur Custom Files. Selamat mencoba. 🙂

      Balas
  4. Meidy N Surawinata mengatakan

    Rab, 7 September 2016 pada 4:21 pm

    DH,

    Pak kalo bedanya MASINO Extension dan MASINO Template itu apa pak ?
    Terima kasih.

    Salam,

    Meidy

    Balas
    • Masino Sinaga mengatakan

      Rab, 7 September 2016 pada 4:27 pm

      Bedanya, lihat di sini: Masino Template for PHPMaker.

      Balas
  5. aries djp mengatakan

    Sel, 21 Februari 2017 pada 4:22 pm

    pak masino ini satu tim sm pak yuyus ga ya? 😀

    Balas
    • Masino Sinaga mengatakan

      Rab, 22 Februari 2017 pada 10:07 pm

      Lho, kok tahu? 😛

      Balas
  6. Mr Koleh mengatakan

    Sab, 10 Juni 2017 pada 8:00 am

    Saya punya PHPmaker berkat bantuan Pak Masino dan masih tahap eksperimen, ada pertanyaan bagaimana menerapkan “Granting permission to individual fields” dalam “dymanic selection” di PHPmaker. Misalnya Propinsi A terdiri dari Kab a,b,c, Kab a terdiri dari kecamatan 1,2,3 dan Propinsi B terdiri dari Kab e,f,g, Kab e terdiri dari kecamatan 4,5,6. Apabila user dengan level tertentu hanya bisa mengakses Propinsi A, Kab a, Kec 1, Apakah PHPmaker bisa menanganinya? Trims

    Balas
    • Masino Sinaga mengatakan

      Sab, 10 Juni 2017 pada 6:29 pm

      Bisa. Gunakan server event Recordset_Selecting dan server event Lookup_Selecting.

      Baca topik Server Events and Client Scripts dari menu Help PHPMaker untuk info dan contoh lebih lanjut.

      Balas
  7. Aditya mengatakan

    Sab, 11 Juli 2020 pada 11:35 pm

    Pak Masino, saya mau tanya, untuk keamanan script (source code) php maker itu sendiri gimana ya pak ?
    karena kalau kita liat di view frame source itu mudah sekali terlihat link link active yang ada di aplikasi kita, kadang dilink-link tersebut terdapat id yang merupakan key didatabase kita.

    Terimakasih sebelumnya

    Balas
    • Masino Sinaga mengatakan

      Ming, 2 Agustus 2020 pada 7:34 pm

      Trus, kalau kelihatan memangnya kenapa?

      Balas
  8. Bayu mengatakan

    Sel, 15 Desember 2020 pada 4:23 pm

    Bang Masino,

    Semoga selalu sehat.
    Saya menambah custom menu dengan menuju URL tertentu.
    Mengapa menu ini tidak muncul di option Security ya?
    Hal ini berakibat semua users bisa mengaksesnya.

    Di property mana harus saya tambah?
    Terima kasih.

    Balas
    • Masino Sinaga mengatakan

      Sel, 15 Desember 2020 pada 6:10 pm

      Menu yang tidak terkait dengan object di database pada project PHPMaker memang tidak akan muncul di option Security.

      Solusinya, Anda bisa menggunakan server event MenuItem_Adding untuk menyembunyikan atau menampilkan menu tadi sesuai dengan user level tertentu.

      Lihat topik Server Events and Client Scripts dari menu Help PHPMaker untuk info and contoh kode lebih lanjut.

      Balas
  9. Haryo mengatakan

    Kam, 28 Januari 2021 pada 12:18 am

    saya pengguna baru phpmaker2021. saya sedang mencoba setting halaman login dgn pilihan dynamic userlevel, tetapi ada kendala saat saya register dari halaman login maupun saat menambah user sebagai admin.
    Muncul message : “An internal error has occurred while processing your request”

    Saya menggunakan server local “WAMP”. Mohon petunjuknya? terimakasih

    Balas
    • Masino Sinaga mengatakan

      Jum, 29 Januari 2021 pada 5:08 pm

      Untuk melihat detail dari pesan error tersebut, coba ikuti artikel ini: Cara Mengetahui Detail Error di Aplikasi Web yang Dihasilkan oleh PHPMaker 2021

      Balas
  10. Plaza kasir mengatakan

    Ming, 1 Agustus 2021 pada 12:44 pm

    Saya baru mengenal PHPMaker dari web ini, saya akan mulai langkah awal, terimakasih

    Balas
    • Masino Sinaga mengatakan

      Sen, 2 Agustus 2021 pada 8:00 am

      Sama-sama.

      Balas
  11. Agus mengatakan

    Ming, 1 Agustus 2021 pada 12:50 pm

    Bagaimana membuat hyperlink yg bisa diakses secara umum, berupa tampilan 1 halaman yg berisi data.? Terimakasih pak

    Balas
    • Masino Sinaga mengatakan

      Sen, 2 Agustus 2021 pada 8:01 am

      Hyperlink yang bisa diakses secara umum? Maksudnya link di bagian menu atau sidebar atau navbar, yang bisa diakses/dilihat oleh user Guest atau tanpa harus login terlebih dulu ya? Apakah seperti itu yang dimaksud?

      Balas
  12. Charly mengatakan

    Kam, 16 Juni 2022 pada 9:51 am

    Hallo Pak Masino.
    Pak Masino ada referensi tutorial dari Pak Masino untuk mengatur UserLevel untuk meng-edit salah satu Field saja pada table yang diinginka? Makasih Pak Masino

    Balas
    • Masino Sinaga mengatakan

      Kam, 16 Juni 2022 pada 3:01 pm

      Halo Charly. Maksudnya bagaimana ya? Salah satu field itu contoh kasusnya bagaimana?

      Balas
      • Charly mengatakan

        Kam, 16 Juni 2022 pada 5:00 pm

        Contoh saya punya table data_pencairan yang terdiri dari beberapa Field misalkan :
        IdPencairan
        KodePencairan
        UraianPencairan
        JumlahPencairan
        StatusPencairan

        Kemudian saya buat userlevel misalkan operator dan verifikasi, setelah data diinput di table data_pencairan oleh Operator secara default StatusPencairan bernilai “Draft”, nanti pada saat Verifikator yang login dia akan mengganti StatusPencairan menjadi “SudahDiperiksa”, tetapi pada saat tabel data_pencairan di edit oleh Verifikator, hanya Field StatusPencairan yang bisa di edit, field yang lain Read Only.
        Mohon pentunjuk Pak Masino…Makasih

        Balas
        • Masino Sinaga mengatakan

          Kam, 16 Juni 2022 pada 8:00 pm

          Ooh, seperti itu toh maksudnya, ya ya ya… 😉

          PHPMaker tentu saja bisa mensolusikannya dengan sangat mudah.

          Cukup aktifkan saja pilihan Read Only dari Fields setup -> Edit Page, kecuali field StatusPencairan, supaya tetap bisa dipilih datanya.

          Setelah itu, generate ulang semua file script seperti biasa.

          Balas
          • Charly mengatakan

            Jum, 17 Juni 2022 pada 11:30 am

            Makasih Pak Masino, atas bantuannya…
            Tapi Pak Masino, seandainya kalau Operator login kembali untuk meng-edit/memperbaiki data yang diinput, field-nya masih Read Only. Gimana caranya agar pada saat User Level Oprator yang login semua field-nya tidak Read Only, dan hanya Userl Level Verifikator yang berlaku Field Read Only nya. Makasih Pak Masino

            Balas
            • Masino Sinaga mengatakan

              Jum, 17 Juni 2022 pada 1:16 pm

              Untuk user level Operator, bisa dibuatkan Database View berdasarkan table tadi. Jadi, user tetap dapat mengubah data menggunakan object Database View di PHPMaker tadi, terpisah dengan table yang digunakan khusus untuk user level Verifikator.

              Balas
              • Charly mengatakan

                Jum, 17 Juni 2022 pada 2:13 pm

                Makasih Pak Masino…sudah berhasil…

                Balas
                • Masino Sinaga mengatakan

                  Jum, 17 Juni 2022 pada 2:18 pm

                  Sama-sama.

Tinggalkan Balasan ke Charly Batalkan balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses

Pos-pos Terbaru

  • Cara Menampilkan Tombol Close di Footer Modal buat Custom File yang SkipHeaderFooter-nya Bernilai True
  • Solusi Buat Field Lookup Table yang Bermasalah di Server Hosting
  • Hati-Hati Meredirect Pengguna Setelah Login di PHPMaker 2025
  • Ini Alasan Mengapa Kalian Harus Selalu Pakai PHPMaker versi Terakhir
  • Masino Extensions for PHPMaker 2025 Now Changed!

Menu

  • Siapa Saya?
  • Web Development
  • PHPMaker
  • Umum
  • Syarat dan Ketentuan
  • Sitemap (Peta Situs)
  • Komentar

Komentar Terbaru

  • Charly pada Menonaktifkan Field Tertentu Saat Data Diubah pada Aplikasi Web dari PHPMaker
  • Nanda pada Cara Menampilkan Tombol Close di Footer Modal buat Custom File yang SkipHeaderFooter-nya Bernilai True
  • Nanda pada Mudahnya Menghitung Saldo per Transaksi di Aplikasi Web dari PHPMaker
  • Masino Sinaga pada Menonaktifkan Field Tertentu Saat Data Diubah pada Aplikasi Web dari PHPMaker
  • Masino Sinaga pada Mudahnya Menambahkan Beberapa Kondisi pada String Filter di PHPMaker

Situs Terkait

  1. I Love PHPMaker
  2. Situs Resmi PHPMaker
  3. Forum Diskusi PHPMaker
  4. PHPMaker di IlmuKomputer.com
  5. PHPMaker Projects
  6. PHPMaker Learning

Baru di PHPMaker?

Baca ini terlebih dulu ...

  1. Ayo Menjadi Web Developer yang Cerdas!
  2. PHPMaker: PHP Code Generator + PHP Framework
  3. Pertanyaan-Pertanyaan yang Paling Sering Diajukan Seputar PHPMaker
  4. Tips buat Anda Pemula yang Baru Mengenal dan Menggunakan PHPMaker
  5. Bacalah Help, Bacalah Help, dan Bacalah Help di PHPMaker!

(c) Masino Sinaga 2009 - 2025 | WordPress | Catat masuk | Kembali ke atas