Как вызвать функцию модуля в Codeigniter HMVC? Танк аутентификации - PullRequest
0 голосов
/ 25 ноября 2011

Я установил танковую аутентификацию, чтобы сэкономить время на создание скрипта аутентификации.

Поскольку я использую HMVC, у аутентификации в танке есть свой собственный модуль (modules / auth).

Как я могу защитить свои другие модули (/ admin, / members и т. Д.) С помощью сценария входа в систему ??

Из того, что я прочитал, мне нужно сделать что-то вроде:

modules::run('auth/is_logged_in'); 

Мой контроллер аутентификации выглядит так:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class Auth extends MX_Controller
{
    function __construct()
    {
        parent::__construct();

        $this->load->helper(array('form', 'url'));
        $this->load->library('form_validation');
        //$this->load->library('security');
        $this->load->library('tank_auth');
        $this->lang->load('tank_auth');

    }

    function index()
    {
        if ($message = $this->session->flashdata('message')) {
            //$this->load->view('auth/auth/general_message', array('message' => $message));

            $main_content = 'auth/auth/general_message';
            $this->load->view('includes/template', array('message' => $message, 'main_content' =>$main_content));
        } else {
            redirect('auth/login/');
        }
    }

    /**
     * Login user on the site
     *
     * @return void
     */
    function login()
    {
        if ($this->tank_auth->is_logged_in()) {                                 // logged in
            redirect('admin');

        } elseif ($this->tank_auth->is_logged_in(FALSE)) {                      // logged in, not activated
            redirect('auth/send_again/');........

контроллер / модуль, который я хочу защитить с помощью сценария входа в систему:

<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

    class Admin extends MX_Controller {

        public function __construct(){
            parent::__construct();  



            modules::run('auth/auth/login'); 

        }   

Выше не похоже на работу? Чего мне не хватает?

1 Ответ

4 голосов
/ 09 декабря 2011

Я вставил этот код в мои контроллеры:

function _remap($method)
{
    if (method_exists($this, $method) && $this->tank_auth->is_logged_in())
    {
        $this->$method();
    }
    else
    {
        redirect('/auth/login/');
    }
}
...