Проверка входа пользователя в систему / сессий с использованием хуков [Codeigniter] - PullRequest
0 голосов
/ 14 сентября 2018

hooks.php

$hook['post_controller_constructor'] = function()
{
    $this->CI = & get_instance();

    $session = $this->CI->session->userdata('user_id');
    if( $session == TRUE )
    {
       $this->CI->load->view('admin/dashboard');
        echo "<script>console.log('true')</script>";
    }

    if( $session == FALSE )
    {
        $this->CI->load->view('public/articles_list');
        echo "<script>console.log('false')</script>";
    }

};

(базовый контроллер) MY_controller.php

class MY_Controller extends CI_Controller
    {
        public function __construct()
        {
            parent::__construct();
            // if (!($this->session->userdata('user_id'))) {
            //  return redirect('login');
            // }
            $this->load->model('articles_model');
        }
    }

(Контроллер) admin.php

class Admin extends MY_Controller
    {
        public function dashboard()
        {
            $this->load->helper('form');
            $this->load->library('pagination');
            $config = [
                'base_url' => base_url('admin/dashboard'),
                'per_page' => 5,
                'total_rows' => $this->articles_model->num_rows(),
                'full_tag_open' => '<ul class="pagination">',
                'full_tag_close' => '</ul>',
                'next_tag_open' => '<li class="page-item">',
                'next_tag_close' => '</li>',
                'prev_tag_open' => '<li class="page-item">',
                'prev_tag_close' => '</li>',
                'num_tag_open' => '<li class="page-item">',
                'num_tag_close' => '</li>',
                'cur_tag_open' => '<li class="page-item active"><a class="page-link">',
                'cur_tag_close' => '</a></li>',
                'attributes' => [
                    'class' => 'page-link'
                ]
            ];
            $this->pagination->initialize($config);
            $articles = $this->articles_model->get_articles($config['per_page'],$this->uri->segment(3));
            $this->load->view('admin/dashboard',['articles'=>$articles]);
        }

(Контроллер) login.php

class Login extends CI_Controller
{
    public function index()
    {
        // if ($this->session->userdata('user_id')) {
        //  return redirect('admin/dashboard');
        // }
        $this->load->helper('form');
        $this->load->view('public/admin_login.php');
    }

Мой вопрос был до того, как я проверял сеансы с использованием базового контроллера, он работал нормально, но теперь я хочу использовать хуки, чтобы всякий раз, когда любой контроллер получал запрос, он проверял хук на предмет того, вошел ли пользователь в систему или нет, и перенаправляет на любая из страниц.

Проблема в том, что он не перенаправляет на страницу, я пытался $this->CI->load->view(), он остается на той же странице, ничего не происходит, я также пытался redirect(), но затем он застревает в каком-то цикле, давая ERR_TOO_MANY_REDIRECTS ошибка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...