SOY CMS / SOY Shop

ブログトップ

マイページの各ページのログインチェックと表示

2014年04月08日

マイページの各ページで、

ログインしていないと表示されないページがあったり、

逆にログインしていたら表示されないページがあります。


ログインチェックは各ページで行われていますので、

今回はそのあたりを見ていきたいと思います。




マイページの表示周り

マイページを表示する2



ログインフォームでは、これからログインをするということで、

現時点でログインしている状態だったら表示されてはいけません。



逆に購入履歴一覧等の個人情報を含むページの場合、

ログインしていない状態で表示されたら困ります。



各ページでどのように出し分けを行っているかという話ですが、


最初にログインしていない状態で開くログインページのソースコードが

/soyshop/webapp/src/mypage/_common/pages/LoginPage.class.php


class LoginPage extends MainMyPagePageBase{

	function LoginPage(){
		
		WebPage::WebPage();

		$mypage = MyPageLogic::getMyPage();
		//ログインチェック
		if($mypage->getIsLoggedin()){
			$this->jumpToTop();
		}
	}
}

コンストラクタ(LoginPage)でログインチェックを行い、

ログインしている場合はjumpToTop関数で管理画面で設定したログインユーザのトップページに遷移するようにしています。


一方、購入履歴一覧ページでは

/soyshop/webapp/src/mypage/_common/pages/order/IndexPage.class.php


class IndexPage extends MainMyPagePageBase{

	function IndexPage($args){
		
		$mypage = MyPageLogic::getMyPage();
		
		//ログインチェック
		if(!$mypage->getIsLoggedin()){
			$this->jump("login");
		}
	}
}

ログインチェックでログインしていない場合はログインフォームページへ遷移するようにしています。


このように各ページクラスのコンストラクタの最初の方でログインチェックを行うようにして表示制限を行います。


各ページでログインチェックを行うため、

/soyshop/webapp/src/mypage/_common/profile/IndexPage.class.php

上記のプロフィール表示ページのように、


class IndexPage extends MainMyPagePageBase{

	function IndexPage($args){
		
		//このページはログイン関係なく閲覧できるので、ログインチェックは行わない
		$mypage = MyPageLogic::getMyPage();
		
		$accountId = (isset($args[0])) ? $args[0] : null;
		$user = $mypage->getProfileUser($accountId);
		
		//ユーザがプロフィールページの閲覧を許可していない場合は前のページかトップページに飛ばす
		if($user->getIsProfileDisplay() != SOYShop_User::PROFILE_IS_DISPLAY){
			soyshop_redirect_from_profile();
		}
	}
}

閲覧者のログインの有無ではなく、

表示されているユーザのプロフィールの閲覧権限の有無によって表示を制限する

ということも可能となります。