LoginSignup
2
2

More than 5 years have passed since last update.

FuelPHP 1.5 で oil generate admin... すると無限ループになるかもに暫定対処する

Last updated at Posted at 2013-04-02

FuelPHP 1.5 で oil generate admin... すると無限ループになるかもに暫定対処する

FuelPHP 1.5 で

$ oil generate admin...

を実行すると、認証部分で無限ループになるかも。

そんな時は以下を参考に対処すると良いかも知れん。

oil 側を修正することで oil g admin しても大丈夫になるようにする。

以下の2ファイルを各々、以下の内容に修正する事で、oil g admin した時に生成されるファイルにおいて、無限ループに陥らないようになる。

/fuel/packages/oil/views/admin/crud/controllers/admin.php
    public function before()
    {
        parent::before();

        if (Request::active()->controller !== 'Controller_Admin' or ! in_array(Request::active()->action, array('login', 'logout')))
        {
            if (Auth::check())
            {
                if ( ! Auth::member(100))
                {
                    Session::set_flash('error', e('You don\'t have access to the admin panel'));
                    Response::redirect('/');
                }
            }
            else
            {
                Response::redirect('admin/login');
            }
        }
    }
/fuel/packages/oil/views/admin/orm/controllers/admin.php
    public function before()
    {
        parent::before();

        if (Request::active()->controller !== 'Controller_Admin' or ! in_array(Request::active()->action, array('login', 'logout')))
        {
            if (Auth::check())
            {
                if ( ! Auth::member(100))
                {
                    Session::set_flash('error', e('You don\'t have access to the admin panel'));
                    Response::redirect('/');
                }
            }
            else
            {
                Response::redirect('admin/login');
            }
        }
    }

もう既に oil g admin してしまっていて、とりあえずApp側だけ修正する場合

もう既に oil g admin してしまっていて、とりあえずApp側だけ修正したいんだけど…
という場合は以下の内容に書き換えればOKなはず。

/fuel/app/classes/controller/admin.php
    public function before()
    {
        parent::before();

        if (Request::active()->controller !== 'Controller_Admin' or ! in_array(Request::active()->action, array('login', 'logout')))
        {
            if (Auth::check())
            {
                if ( ! Auth::member(100))
                {
                    Session::set_flash('error', e('You don\'t have access to the admin panel'));
                    Response::redirect('/');
                }
            }
            else
            {
                Response::redirect('admin/login');
            }
        }
    }

上記にすることで、oil g admin で生成されたファイルの無限ループには暫定対応可能なはず。

2
2
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2