Я хочу выполнить вход в систему с моим проектом codeigniter.
Некоторые соображения:
1) Существуют два внешних контроллера, которые не требуют аутентификации.Один для информации (splash_pages и тому подобное), а другой для создания сеанса, вошедшего в систему.
2) Все остальные контроллеры наследуются от главного контроллера, который, как часть его конструктора, требует, чтобы вы вошли в систему иливыводит вас на экран входа в систему.
Пока что вышеприведенные 2 отлично работают для входа в систему и выхода из системы.
В терминах кода:
Главный контроллер, которым я былописание для 2) Это находится в папке Core Codeigniter
class MY_Controller extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->library('cart');
$this->load->library('session');
$this->load->helper('form');
$this->load->library('form_validation');
if (!$this->session->userdata('loggedin')){
redirect('/sessions/log_in/','refresh');
}
}
Класс, использующий систему входа в систему:
class Records extends MY_Controller {
public function __construct()
{
parent::__construct();
$this->load->model('some_model');
$this->load->library('some_library');
}
Идея состоит в том, что при построении объекта он будет проверять,пользователь вошел в систему или нет, и либо правильно построил объект, либо перенаправил на экран входа в систему.
Однако потребности проекта немного изменились.В настоящее время требования гласят, что существует около 6 различных групп пользователей, чьи привилегии могут быть организованы в подмножества.A может сделать I, B может сделать A + II, C может сделать B + III и так далее.Были небольшие намеки на то, что могут быть привилегии, которые не являются строго подмножествами (только IE может выполнить задачу IV), но это еще не подтверждено, поэтому я хочу оставить свои настройки открытыми.
Как яПредполагается, что это будет иметь кучу контроллеров из MY_Controller, которые наследуются от MY_Controller.
Например, в папке Core:
class MY_AsController extends MY_Controller {
public function __construct(){
parent::__construct();
$accountType = $this->session->userdata('accountType');
if(!($accountType == declaredConstant)){
redirect('/someController/someMethod','refresh');
}
}
Затем в папке контроллеров:
class AControlPage extends MY_AsController {
//Insert page functions that only As have access to here
}
К сожалению, применение его на практике не вызывает никаких ошибок, только пустая страница.Я не уверен, что после этого.