There are many ways you could do that, but one of basic is Phill Sturgeon's suggestion about having core classes for any of app using level or make something like this (MY_Controller
class) in your APPPATH . 'core'
directory:
class MY_Controller extends CI_Controller // prefix MY_ can be found in APPPATH . 'config/config.php' or you can set your own
{
public __construct()
{
parent::__construct();
}
}
class Admin_controller extends MY_Controller
{
public function __construct()
{
parent::__construct();
//pseudo code
if ($this->session->userdata('level') != 'admin')
{
exit("You need admin's privileges to get in here.");
}
}
}
class Public_controller extends MY_Controller
{
public function __construct()
{
parent::__construct();
}
}
Than in controllers you would make files/classes that would extend appropriate core class:
class Blog extends Public_controller
{
public function __construct()
{
parent::__construct();
}
}
or something like:
class Dashboard extends Admin_controller
{
public function __construct()
{
parent::__construct();
}
public function some_admin_method()
{
//
}
}
Alternativelly, you can check this link too.