CodeIgniter -- Best implementation for ACL [closed]
Asked Answered
M

2

7

What's the best way to implement ACL in CodeIgniter?

  • DB based roles, groups, user persmissions?
  • Create a library?

Here is what we're working with:

Articles, Authors

There are two types of author:

  • Normal author (can only see his own articles).
  • Author that is also an admin (can see all articles and approves other author's articles).

Considering the functionality will expand (more features that will need permission restriction for types of authors), what is the best way to do ACL in CodeIgniter?

Matty answered 5/4, 2011 at 17:58 Comment(2)
You can check THIS and THIS page and also try to search with "ACL" HERE.Macdermot
You can read the URL below, which describes how to add the Zend ACL library into a CodeIgniter installation: adding-zend-acl-to-codeigniterZacharyzacherie
O
3

You will need to separate controllers for each type of permission, and have a module that checks the session variable set when the user logs in with the type of permission allowed for that particular controller.

// module User_model:
function is_logged_in_admin()
{
    $is_logged_in = $this->session->userdata('is_logged_in');
    $user_status = $this->session->userdata('user_type');
    if(!isset($is_logged_in) || $is_logged_in != true || $user_status != 'admin')
    {
    $this->session->sess_destroy();  
    redirect('please_login/', 'refresh');           

    }       
}

Controller , load the module and check in the construct:

    function __construct()
{
    parent::__construct();
    $this->load->model('User_model'); 
        $this->User_model-> is_logged_in_admin();

}
Orthostichy answered 5/4, 2011 at 19:52 Comment(2)
That would be just for login, not ACL for specific components of the controllers.Matty
you could also include the is_logged_in_admin(); in each specific function within the controller.Orthostichy
S
0

I am in the process of writing an ACL based authorization system which checks permission on a URL level. It is supposed to be transparent and Authentication system agnostic. It is implemented as a post controller constructor hook.

Sadly its not finished. but you can check it out on github and fork it if you feel like finishing it. atm it only works with ACLs coded in a config file, but it allows for an external group/role source (i just havent written one yet).

Solander answered 6/4, 2011 at 1:52 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.