cakephpで管理画面を作成する

参考にした記事は以下です。本当にありがとうございます!
CakePHPの「ログイン機能の導入」以下です。

いろんなサイトを参考にしましたが、上のサイトが一番自分にとってはわかりやすくて、うまくいきました。
パスワードの暗号化など、本当に助かりました。

やりたかったのは、「admin」がついていたら、ログインしているかどうかを確認して、
してなかったらログイン画面に入り、ログインした人だけadminの領域を触れるというようなことです。とりあえず権限とかはなしで。

userテーブルは既にあります。中に「id,username,password」と、あとは「created,modified」などお決まりのカラム等を追加。
cakebakeでモデルやコントローラーやビューも基本的なものは作っちゃってます。

1)config/core.phpの「Configure::write(‘Routing.prefixes’, array(‘admin’));」のコメントを外す。

2)cake/lib/controller/app_controller.phpをコピーして、app/直下に入れる。

3)app_controller.phpに



	public $components = array('Auth','Session');

	function beforeFilter(){

		//adminかどうか
		if (!empty($this->params['prefix'])
	   		&& $this->params['prefix']=='admin'
	   		&& !empty($this->params['admin'])) {


		    $this->Auth->authError = 'このページへのアクセスは認証が必要です。';
		    $this->set('username', $this->Auth->user('username'));
		    $this->layout = 'admin';

		} else {
		   // $this->layout='user';
		   $this->Auth->allow($this->params['action']);
		}
	}

を作成。

4)user_controller.phpに


	var $components = array('Auth');

  /* フィルター */
  public function beforeFilter()
  {
    $this->Auth->loginError = 'ユーザー名もしくはパスワードが違います。';
    $this->Auth->loginRedirect = 'admin/contents/add';
  }

を追加

5)user_controller.phpに

  /* ログイン */
  public function login()
  {
    $this->set('title_for_layout', 'ログイン');
  }
  public function admin_login()
  {
    $this->render('login');
  }

  /* ログアウト */
  public function logout()
  {
    $this->redirect($this->Auth->logout());
  }
  public function admin_logout()
  {
    $this->render('logout');
  }

を追加。

6)管理画面(admin)と公開画面のレイアウトを変えたいので、

view/layout/にadmin.ctpを追加。
user_controller.phpの
「function beforeFilter(){」の中に

    $this->layout = 'admin';

を追加

です。

あとは、admin_addとかをそれぞれのコントローラーやビューに追加していきます。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です