Tolong pilih kategori sesuai, jenis posting (diskusi atau bukan) dan sertakan tag/topik yang sesuai seperti komputer, java, php, mysql, dll. Promosi atau posting tidak pada tempatnya akan kami hapus!
- Bagi Anda yang ingin mendaftar, baca link berikut:
http://diskusiweb.com/discussion/50491/how-to-registrasi-diskusiweb-com-baca-ini-terlebih-dahulu
- Cara menyisipkan kode program supaya tampil rapi dan terformat dengan baik di diskusiweb.com: http://www.diskusiweb.com/discussion/50415/cara-menyisipkan-kode-program-di-diskusiweb-com
- Cara posting gambar/image di post Anda: http://www.diskusiweb.com/discussion/47345/cara-menyisipkan-menyertakan-image-pada-posting/p1

membuat hak akses user

selamat pagi para mastah.
mau tanya, cara membuat hak akses yang berbeda-beda tiap user.
data yang ditampilkan pun berbeda-beda tiap user.
namun di ambil dari DATABASE dan TABEL yang sama.
tks 
Tagged:

Comments

  • edited September 2013
    tbl_tree
    id_tree | id_parent | level | treecode  | tree
    1       | 0         | 1     | 001000000 | Direktorat Jenderal
    2       | 1         | 2     | 001002000 | Direktorat A
    3       | 1         | 2     | 001003000 | Direktorat B
    4       | 3         | 3     | 001003004 | Sub Direktorat X
    5       | 3         | 3     | 001003005 | Sub Direktorat Y

    tbl_groupaccess
    id_ga | id_tree | groupaccess       | bitcode
    1     | 1       | Superadmin        | 255
    2     | 1       | Admin Ditjen      | 127
    3     | 1       | Operator Ditjen   | 28
    4     | 2       | Admin Dit A       | 127
    5     | 2       | Supervisor Dit A  | 63
    6     | 2       | Operator Dit A    | 28
    7     | 3       | Admin Dit B       | 127
    8     | 3       | Operator Dit B    | 28

    tbl_user
    id_user | id_ga | user         | pass
    1       | 1     | sa           | ***
    2       | 4     | Admin A      | ***
    3       | 5     | Supervisor A | ***
    4       | 6     | Op A1        | ***
    5       | 6     | Op A2        | ***
    6       | 7     | Admin B      | ***




    tree itu struktur organisasi yg ada
    level itu kedalaman node di dalam struktur organisasi
    treecode itu penulisan id tree dalam bentuk lengkap berikut parent-parent nya, panjang tergantung butuh
    groupacces itu pengelompokan hak akses untuk user
    bitcode itu kode hak akses dalam bentuk biner 8 bit, terserah, tergantung butuh

    nentuin bitcode nya
    spadm | adm | spvisor | add | edit | del | pub | approve = bin      = dec
    1     | 1   | 1       | 1   | 1    | 1   | 1   | 1       = 11111111 = 255
    0     | 1   | 1       | 1   | 1    | 1   | 1   | 1       = 01111111 = 127
    0     | 0   | 1       | 1   | 1    | 1   | 1   | 1       = 00111111 = 63
    0     | 0   | 0       | 1   | 1    | 1   | 0   | 0       = 00011100 = 28


    pengaturan hak aksesnya juga tergantung butuh, kombinasinya bisa beragam,
    misal ada grup akses yg hanya boleh entri data doang (add) tapi kagak boleh edit, delete, dll

    0     | 0   | 0       | 1   | 0    | 0   | 0   | 0       = 00010000 = 16



    tinggal atur datanya

    tbl_data
    id_data | content       | id_tree | id_user
    1       | Surat Dinas 1 | 2       | 4
    2       | Surat Dinas 2 | 2       | 5
    3       | Surat Dinas 3 | 4       | 6


    kalo dirunut treecode nya lewat JOIN
    1       | Surat Dinas 1 | 2        -> treecode = 001002000
    2       | Surat Dinas 2 | 2        -> treecode = 001002000
    3       | Surat Dinas 3 | 4        -> treecode = 001003004

  • edited September 2013
    login
    ambil id_user, level, treecode dan bitcode sesuai user yg login, simpan di session
    baca dan tentukan hak akses sesuai bitcode

    $_sa=($_SESSION['bitcode']&128==128)?true:false;
    $_a=($_SESSION['bitcode']&64==64)?true:false;
    $_sv=($_SESSION['bitcode']&32==32)?true:false;
    $_add=($_SESSION['bitcode']&16==16)?true:false;
    $_edt=($_SESSION['bitcode']&8==8)?true:false;
    $_del=($_SESSION['bitcode']&4==4)?true:false;
    $_pub=($_SESSION['bitcode']&2==2)?true:false;
    $_apr=($_SESSION['bitcode']&1==1)?true:false;



    tabular data
    jika superadmin, bisa baca seluruh data tanpa kecuali dan batasan
    jika admin, bisa baca data yg ada di id_tree yg sama dengan dirinya dan anak-anaknya
    jika supervisor, bisa baca data yg ada di id_tree yg sama dengan dirinya
    jika bukan semua, hanya bisa baca data yg id_user sama dengan id_user nya sendiri



    'SELECT d.* FROM tbl_data d
    LEFT JOIN tbl_tree t ON t.id_tree=d.id_tree
    WHERE 1=1 '.
    (!$_sa
    ?
      ($_a
      ?'AND SUBSTRING(d.treecode,1,' . ($_SESSION['level']*3) . ')="' . substr($_SESSION['treecode'],0,$_SESSION['level']*3) . '"'
      :
        ($_sv
        ?'AND d.treecode="' . $_SESSION['treecode'] . '"'
        :'AND d.id_user="' . $_SESSION['id_user'] . '"')
      )
    :'')


    semisal jika yg login : "Op A1" -> bukan superadmin $_sa=false, bukan admin $_a=false, bukan supervisor $_sv=false
    pake kondisi WHERE yg ini :

    'AND d.id_user="' . $_SESSION['id_user'] . '"'

    hanya mencari data yg id_user nya sama dengan id_user "Op A1"
    yg bakal nungul data : 1

    semisal jika yg login : "Admin B" -> bukan superadmin $_sa=false, admin $_a=true
    pake kondisi WHERE yg ini :

    'AND SUBSTRING(d.treecode,1,' . ($_SESSION['level']*3) . ')="' . substr($_SESSION['treecode'],0,$_SESSION['level']*3) . '"'


    dari session, treecode=001003000, level=2 -> hasil substr=001003
    dipake untuk mencari data yg sebelah kiri treecode datanya "001003"
    yg bakal nungul data : 3



    itu baru ngurusi tampilan tabular,
    menentukan mana data yg bakal tampil atau tidak
    belum fungsional add / edit / delete / publish / approve

    masalah user akses ribet : YA
    tapi balik lagi butuhnya kaya apa
    kalo di cms yg gw bikin modelnya kaya di atas tapi lebih ruwet lagi
    yg di atas sudah gw sederhanakan, cuma gw ambil dasarnya doang
  • hadeugh... #:-S
  • edited September 2013
    napa mas ? :D
    ruwet yo ?

    yg sabar aja kalo nyoba bikin cms
    jangan langsung lompat ke yg ruwet,
    nyoba bikin yg sederhana, lalu bagian per bagian dikembangkan
    kalo TS, emang butuhnya sudah kaya gitu ...
    tapi kalo elo mau nyoba bikin yg serupa ya anggap aja tantangan :D
  • :))  #:-S
  • oke, tks banyak mas boo.
    akhirnya work juga, walaupun sedikit agak berbeda :D
  • Klo aku bikin privilege model binary. konsepnya gini :

    Ada 2 hal utama, yaitu 'kategori privilege' dan 'privilege.
    contoh 'kategori privilege' :
    1. Artikel Berita
    2. Manajemen Member
    3. dll

    contoh 'privilege' :
    1.a Add
    1.b Edit
    1.c Delete
    2.a Add
    2.b Delete
    3. dll

    setiap 'privilege' punya kode yaitu 2 pangkat x. (x adalah increment +1) contoh :
    1.a Add kodenya 2pangkat0 = 1
    1.b Edit kodenya 2pangkat1 = 2
    1.c Delete kodenya 2pangkat2 = 4
    2.a Add kodeya 2pangkat0 = 1
    2.b Delete kodenya 2pangkat 1 = 2

    konsep ini sama kyk yg dipakai sistem UNIX untuk privilege file/folder. :)

    cara pakainya adalah misal MEMBER A itu berhak untuk Add dan Edit Artikel. maka privilegenya utk kategori Artikel Berita adalah 3(penjumlahan dari 1+2).

    aku biasa bikin bentuk json utk privilege, contoh : {"1":"3","2":"1"}
    privilege itu bacanya, MEMBER akan punya akses untuk Artikel Berita (Add dan Edit) untuk Manajemen Member (Add)

    kamu tinggal buat code parsingnya aja untuk cek json-nya. :D
Sign In or Register to comment.