<?php
/**
 * ユーザーがログインしているかのチェック。
 * ログイン後のページのtopで呼び出され、通過した場合、$_accountにユーザーインスタンスが入ることが保証される。
 * $Id: check_login.inc,v 1.2 2015/10/08 11:49:32 wanggb Exp $
 * @author iimuro
 * @package manager.public_html
 */

ErrorLogger::doOutput("login check", 0);


if (isset($_SESSION["account"]) && (strtolower(get_class($_SESSION["account"])) == "accountmst")) {
	global $_account;
	// セッションに存在すれば、それを利用→通過
	$_account = $_SESSION["account"];
	ErrorLogger::doOutput($_account->login, 0);
} else {
	// 存在していなければ、ログイン画面表示
	$layout_pages = array();
	$layout_pages["top"] = "tab_login.inc";
	$layout_pages["middle"] = "login_form.inc";
	require_once(MANAGER_TEMPLATE_DIR_PATH . "/layout/topmenutopsub_layout.inc");
	exit;
}

/**
 * 権限チェックを行います。事前に$_accountがセットされていることが必須です。
 * @param unknown $allow_types  空 = 全部
 */
function checkAuthority($allow_types = null) {
	global $_account;
	if (empty($_account)) {
		$layout_pages = array();
		$layout_pages["top"] = "tab_login.inc";
		$layout_pages["middle"] = "login_form.inc";
		require_once(MANAGER_TEMPLATE_DIR_PATH . "/layout/topmenutopsub_layout.inc");
		exit;
	}
	
//	ErrorLogger::doOutput($allow_types . $_account->modules,0);
//	return true;
	// 超级管理员 或 无限制的场合，返回true
	if (empty($allow_types)) {
		return false;
	}
	
	$account_authority_type_list = explode("|", $_account->modules);
	foreach ($account_authority_type_list as $account_authority_type) {
	  if ($allow_types == $account_authority_type) {
			return true;
		}
	}
	return false;
}
?>