ACL in PHP - PowerPoint PPT Presentation

1 / 20
About This Presentation
Title:

ACL in PHP

Description:

ACL atau akronimnya Access Control List, merupakan suatu kaedah untuk menentukan ... Adalah cara mudah untuk melaksanakan authorization access dalam sesuatu sistem. ... – PowerPoint PPT presentation

Number of Views:164
Avg rating:3.0/5.0
Slides: 21
Provided by: meetup
Category:
Tags: acl | php | cara | meetup | mudah

less

Transcript and Presenter's Notes

Title: ACL in PHP


1
ACL in PHP
2
Isi Kandungan
  • Pengenalan
  • Apa itu ACL?
  • Fungsi ACL?
  • IF Else Authorization
  • ACL
  • Sesi Soalsiasat

3
Pengenalan
  • Apa itu ACL?ACL atau akronimnya Access Control
    List, merupakan suatu kaedah untuk menentukan
    akses kepada sesuatu fungsi untuk setiap pengguna
    sistem.
  • Merupakan satu terma, ACL tidak dimasukkan
    sebagai fungsi native PHP dan perlu dibangunkan
    oleh pembangun user defined function.

4
IF Else Authentication
  • Adalah cara mudah untuk melaksanakan
    authorization access dalam sesuatu sistem.
  • Selalu digunakan dalam pembangunan PHP.
  • Terdapat banyak kelemahan.
  • Sukar untuk diurus.
  • Kurang dinamik.

5
IF Else Authorization
  • Contoh Aturcara
  • lt?php
  • username test
  • levels admin
  • if(level admin)
  • //give system management access to admin.
  • elseif(level hr)
  • //give human resource access to hr.
  • elseif(level it-dept)
  • //give IT department access to IT depts staff.
  • endif
  • ?gt

6
Senario yang mungkin berlaku
  • Organisasi telah berkembang, jabatan baru
    Jabatan Multimedia telah diwujudkan, sila beri
    akses kepada staf Jabatan Multimedia!
  • Jabatan Multimedia memerlukan akses kepada
    Modul Jabatan IT!
  • Jabatan Multimedia akan dimansuhkan dan staf
    Jabatan Multimedia akan diletakkan dibawah
    Jabatan IT, sila pindahkan modul Jabatan
    Multimedia kepada Jabatan IT.

7
ACL
  • Kaedah ini menggunakan database, table yang
    diperlukan-
  • acl
  • user
  • user_group
  • user_privilege
  • Lebih baik implement konsep Object Oriented
    Programming (OOP) untuk menguruskan akses.
  • Akses diperiksa berdasarkan kebenaran untuk
    menggunakan sesuatu module, bukan berdasarkan
    level pengguna.

8
ACL table acl
Field Type Misc.
id INT(11) auto_increment primary_key
modules VARCHAR(100)
9
ACL table user
Field Type Misc.
id INT(11) auto_increment primary_key
name VARCHAR(100)
password VARCHAR(32)
group INT(11) link to id in user_group table
10
ACL table user_group
Field Type Misc.
id INT(11) auto_increment primary_key
name VARCHAR(100)
11
ACL table user_privilege
Field Type Misc.
id INT(11) auto_increment primary_key
acl_id INT(11)
group_id INT(11)
12
Code 1
  • lt?php
  • // get user data
  • result mysql_query(SELECT u.username, g.id
    FROM user u LEFT JOIN user_group g ON
    u.groupg.id WHERE u.id1)
  • row mysql_fetch_array(result)
  • username rowusername
  • levels rowid
  • appACL new ACL()
  • appACL-gtfetch_ACL(level)
  • if(appACL-gtcheck_ACL(1))
  • //give access to module A
  • elseif(appACL-gtcheck_ACL(2))
  • //give access to module B
  • elseif(appACL-gtcheck_ACL(3))
  • //give access to module C

13
Code 2
  • lt?php
  • class ACL
  • var list_ACL
  • function fetch_ACL(level 0)
  • query SELECT p.id, FROM user_privilege p
    WHERE p.group_id.level. ORDER BY p.id ASC
  • result mysql_query(query)
  • count 1
  • while(row mysql_fetch_array(result))
  • while(count lt rowid)
  • this-gtlist_ACLcount 0
  • count
  • endwhile
  • if(count rowid)
  • this-gtlist_ACLcount 1
  • count
  • endif
  • endwhile
  • query_acl SELECT count(id) AS totals FROM
    acl
  • result_acl mysql_query(query_acl)

14
Code 3
  • // continues from last page
  • function check_ACL(acl 0)
  • if(this-gtlist_ACLacl 1)
  • return true
  • else
  • return false
  • endif
  • ?gt

15
Sample
16
GUI for Editing ACL 1
  • ltform idacl_manager methodpost
    actionacl.phpgt
  • lt?php
  • query_group "SELECT FROM user_group"
  • result_group mysql_query(query_group)
  • while (row_group csdb-gtmysql_fetch_array(res
    ult_group))
  • levelsrow_group"id" row_group"name"
  • endwhile
  • ?gt
  • lttablegt
  • lttheadgt
  • lttrgt
  • ltthgtModulelt/thgt
  • lt?php
  • foreach(levels as value)
  • print ltthgt.value.lt/thgt
  • endforeach
  • ?gt
  • lt/trgt
  • lt/theadgt

17
GUI for Editing ACL 2
  • lttbodygt
  • lt?php
  • query_acl "SELECT FROM acl ORDER BY id
    ASC"
  • result_acl mysql_query(query_acl)
  • count 0
  • while(row_acl mysql_fetch_array(result_acl))
  • menu_idcount row_acl"id"
  • menu_runidrow_acl"id" count
  • menu_namecount row_acl"name"
  • count
  • endwhile
  • query_acp "SELECT FROM user_privilege"
  • result_acp mysql_query(query_acp)
  • while(row_acp mysql_fetch_array(result_acp))
  • this_id menu_runidrow_acpacl_id"
  • menu_accessthis_idrow_acpgroup_id"
    1
  • endwhile

18
GUI for Editing ACL 2
  • lttbodygt
  • lt?php
  • query_acl "SELECT FROM acl ORDER BY id
    ASC"
  • result_acl mysql_query(query_acl)
  • count 0
  • while(row_acl mysql_fetch_array(result_acl))
  • menu_idcount row_acl"id"
  • menu_runidrow_acl"id" count
  • menu_namecount row_acl"name"
  • count
  • endwhile
  • query_acp "SELECT FROM user_privilege"
  • result_acp mysql_query(query_acp)
  • while(row_acp mysql_fetch_array(result_acp))
  • this_id menu_runidrow_acpacl_id"
  • menu_accessthis_idrow_acpgroup_id"
    1
  • endwhile

19
GUI for Editing ACL 3
  • counts 0
  • for(list 0 list lt count(menu_id) list)
  • print "lttrgt"
  • print "lttdgt
  • ltstronggt".menu_namelist."lt/stronggt
  • lt/tdgt"
  • foreach(levels as level gt name)
  • checked ((isset(menu_accesslistlevel)
    and menu_accesslistlevel 1) ?
    "checked'checked'" "")
  • print "lttdgt
  • ltinput type'checkbox' ".checked."
    id'menu_access_".counts."' name'menu_access".
    counts."' value'1' /gt
  • ltinput type'hidden' name'menu_id".counts."'
    value'".menu_idlist."' /gt
  • ltinput type'hidden' name'menu_level".list."
    ' value'".level."' /gt
  • lt/tdgt"
  • counts
  • endforeach
  • print "lt/trgt"
  • endfor
  • ?gt

20
Submit ACL
  • lt?php
  • // Validate post form command
  • mysql_query("TRUNCATE TABLE user_privilege")
  • acl_id _POST"menu_id"
  • acl_access _POST"menu_access"
  • acl_group _POST"menu_level"
  • for (i0 i lt count(acl_id) i)
  • bool ((isset(acl_accessi) and
    acl_accessi 1) ? 1 0)
  • if(bool 1)
  • mysql_query("INSERT INTO user_privilege
    (acl_id, group_id) VALUES (".acl_idi.",
    ".acl_groupi.")")
  • endif
  • endfor
  • ?gt
Write a Comment
User Comments (0)
About PowerShow.com