■ユーザーズフォーラム リニューアルのお知らせ
新規投稿は新ユーザーズフォーラムにお願いします。

Re: ログイン済みの場合だけフロント画面を表示するといった作りは可能でしょうか?

goichi > Re: ログイン済みの場合だけフロント画面を表示するといった作りは可能でしょうか? @ 2012/10/6 12:09
こんにちは(^^
私の環境でいろいろ試してみたので、実験結果として書き込んでみます。
アイディア程度にお考えいただければとおもいます。
(もっと良い方法がありそうな予感がします)

まず、プレフィックス認証を使用するということなので、
/baser/config/baser.php

/app/config/baser.php
にコピーします。
(ここまではお約束ですよね!)

で、コピーしたbaser.phpを開くと106行目付近に以下のような部分があると思います。
// フロント(例)
		'front' => array(
			'name'			=> 'フロント',
			'loginRedirect'	=> '/',
			'userModel'		=> 'User',
			'loginAction'	=> '/users/login',
			'toolbar'		=> true
		),

この部分がコメントアウトされているはずですので、
コメントアウトを外してください。

baserCMSの管理画面からユーザーグループ管理で新規グループを作成します。
このとき、認証プレフィックス設定に「フロント」を選んでください。

つぎにこのグループに属するユーザーを登録しておきます。
新規ユーザー登録で登録しますが、この時に「グループ」は「フロント」を選択してください。

これでプレフィックス認証とユーザーが出来ました。

で、ここからが問題なのですが
このままだと、ログインしていなくてもフロント画面が表示されちゃうんですよね・・・。
(私のイメージでは「フロント」で認証を作ったら、
フロント画面全体にAuth認証がかかるイメージだったのですが、どうやら違うようで・・・。
私の環境だけかもしれませんが・・・。)

とりあえず、この状態から意図する仕組みを作る一番簡単で単純な方法は
使用しているテーマのレイアウトファイルで、ログイン状態を判定してやる方法だと思います。

/app/webroot/themed/テーマ名/layouts/default.php
を開いていただいて、その一番最初に以下の処理を入れます。
<?php
//ログイン情報からプレフィックスを取得する
$userPrefix = $session->read('Auth.User.authPrefix');
//frontまたはadminでなければリダイレクトする
if($userPrefix != 'admin' && $userPrefix != 'front'){
	//ログインページにリダイレクト
	header("Location: http://ドメインとか/users/login");
	exit;
}
?>


冒頭でbaser.phpを変更しましたが、「フロント」を使用すると
http://baserCMSのインストール先/users/login
にログイン画面が自動で設定されます。
(もしスマートURLをOFFにしたなら
http://baserCMSのインストール先/index.php/users/login
になります)

とりあえず、これで
このレイアウトファイル(default.php)を使用するページは、全て認証が必要な仕組みになると思います。
もし他のレイアウトファイルを使うページがある場合は、そちらにも前述の処理をいれてください(^^

いかがでしょうか。
出来なかったらごめんなさい。m(__)m
まぁ、参考程度にお考えいただければと思います。



ログイン
ユーザー名:
パスワード:


  新規登録 / パスワード紛失

検索

facebook
フォーラムで悩みが解決した場合など、よかったら「いいね!」をポチっとクリックしてください!質問の回答者や開発者の励みになります

フォーラムガイド


関連リンク

オンライン状況
26 人のユーザが現在オンラインです。 (26 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 26