При написании своего не большого проекта понадобилась сделать простую фичу вроде того если пользователь авторизован то имеет доступ к странице, а нет так делаем редирект. Подумал, что каждый раз писать проверку в каждом методе контроллера это не есть гуд. Сначала мысль пошла в направлении создать статический метод в контроллере и обращаться к нему из всех остальных, но не тут – то было, нельзя. Чутка по-гуглив нарисовалось два решения, ставить HMVC либо писать библиотеку. Я выбрал последнее. Как оказалось это совсем не сложно
class Authlib { public function Authlib() { $this->CI = & get_instance(); $this->CI->load->helper('url'); $this->CI->load->library('session'); } public function isLogged() { if(!isset($this->CI->session->userdata['auth'])) redirect (base_url(),'refresh'); } private $CI; }
Внутри контроллера при каждом вызове пропишем эту строку и тогда если наш пользователь не авторизован он будет ловить редирект
$this->authlib->isLogged();
Что бы иметь доступ к библиотеке из конторолера есть два способа, загрузить его в autoload.php либо явно загружать каждый раз в конторолере, я выбрал сразу, мне кажется так удобнее.
$autoload['libraries'] = array('database','session','authlib');
Вот такой просто способ создания либ за более детальным описанием можно обратится к документации тут
Тут лучше использовать ф-цию userdata() с класса Session она сразу проверяет на существование элемента в массиве и тогда можно просто записать:

if(!$this->CI->session->userdata('auth'))
redirect (base_url(),'refresh');
Зачем писать то что уже написано для вас