web-dev-qa-db-ja.com

ユーザーがスーパーユーザーであるかどうかを検出する方法

ビジターがguestかどうかを判断するには、次のようなものを使用します。

if ($user->guest) {
echo 'Hello, guest!';
}

さて、訪問者が登録されたスーパーユーザー(管理者)であるかどうかを判断したい場合、そのためのコードは何でしょうか?

Joomla Webサイトのスーパーユーザー以外の誰もアクセスできないようにしたい外部のPHP=ファイルがあります。JoomlaCMSをインポートしてファイルを保護しようとしています。

21
saibbyweb

これらのコードは、現在ログインしているユーザーがスーパーユーザーであるかどうかを決定します-

$user = JFactory::getUser();
$isroot = $user->authorise('core.admin');

そのコードは、コンポーネントレベルだけではなく、グローバル構成で「スーパーユーザー」権限にマップされているものをチェックします。他の方法と比較して自分で確認してください。

29
dev-m

「スーパーユーザー」のステータスを確認するには、チェックする必要があります$user->isRoot。このプロパティは、最初の承認チェックが行われ、ユーザーが特権管理者であることが検出された後に設定されます。

ただし、通常は実際には、ユーザーが他の回答に記載されているような特定の権限を持っているかどうかを確認した方がよいでしょう。

8
Bakual

条件を使用して、特定のグループに属していないユーザーを拒否できます。

$user = JFactory::getUser();
$groups = $user->groups;

if (in_array(8, $groups)):

 //only enter if the user is in the group 8 (group 8 = Super-Administrator)

endif;

これを試して、

$user  = JFactory::getUser();

$user_groups = $user->groups;

print_r($user_groups);

これは配列を返します。デフォルトでは、Joomla管理者ユーザーのスーパー管理者(グループ8)と管理者(グループ7)です。

アレイがこれらの値のいずれかを持っていることを確認できます。その場合、それは管理ユーザーである必要があります。カスタムユーザーグループを作成している場合は、#__usergroupsparent Idも。

それが役に立てば幸い..

6
Jobin Jose

ログインユーザーが特権管理者であるか他のユーザーであるかを確認するには、以下のコードを試してください...

$user = JFactory::getUser();
$isAdmin = $user->get('isRoot');
if ($isAdmin) {
echo 'You are an Administrator';
}
else  {
echo 'You are not Administrator';
}

OR

function isSuperAdmin()
{
  $user = JFactory::getUser();
  return $user->get('isRoot');
}    

if (isSuperAdmin()) 
{
  echo 'You are an Administrator';
}
else  {
  echo 'You are not Administrator';
}
4
PCMShaper

Joomla @since 3.2、フィールドUserGroupListはこれを使用してチェックします:

$isSuperUser = JFactory::getUser()->authorise('core.admin');
2
PLBM