$modx->getLoginUserID()
ログインしているユーザ自身のユーザIDを取得する。管理画面ユーザ・ウェブユーザどちらにも対応。ログインしているかどうかを判定することもできます。
function getLoginUserID($context= '') {
if ($context && isset ($_SESSION["{$context}Validated"])) {
return $_SESSION["{$context}InternalKey"];
}
elseif ($this->isFrontend() && isset ($_SESSION['webValidated'])) {
return $_SESSION['webInternalKey'];
}
elseif ($this->isBackend() && isset ($_SESSION['mgrValidated'])) {
return $_SESSION['mgrInternalKey'];
}
else return false;
}
パラメータ $contextを指定しない場合、管理画面にログインしている場合は管理画面ユーザとしてのIDを返し、ウェブユーザとしてログインしている場合はウェブユーザとしてのIDを返す。
管理画面ユーザとしてもウェブユーザとしてもログインしている場合は、ウェブユーザとしてのIDを返す。
$contextを指定すれば、指定したコンテキストのIDを返す。指定できる値はmgrまたはweb。可読性を高めるために、なるべく明示するようにしてください。
$result = $modx->getLoginUserID('web');
if(empty($result)) return 'ログインしていません';
ログイン判定のために使う場合は上記のように記述します。
※false判定を行なうほうが正確ですが、$modx->getLoginUserType()のように空文字列を返す関数もあるため、覚えやすさを優先する場合はempty判定を用います。
実例
ログイン判定を行なうスニペット
$result = $modx->getLoginUserID('web');
if(!empty($result)) return 'ログインしています';
else return 'ログインしています';
「ログイン判定」などの名前をつけて新規スニペットとして保存します。
[!ログイン判定!]
リソースまたはテンプレートに上記のように記述します。
$_SESSION['webValidated']を見て判定することもできますが、将来的にはセッションに依存しない認証が実装される可能性があるため、なるべく関数を用いることをおすすめします。