Как определить, является ли пользователь Суперпользователем?

Чтобы определить, является ли посетитель гостем , мы используем что-то вроде этого:

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

Теперь, если я хочу определить, является ли посетитель зарегистрированным SuperUser (администратором) или нет, каков будет код для этого?

  

У меня есть некоторые внешние PHP-файлы, которые я не хочу быть доступными никому, кроме SuperUsers моего веб-сайта Joomla. Просто пытайтесь защитить файлы, импортируя Joomla CMS.

18 голосов | спросил saibbyweb 6 J0000006Europe/Moscow 2014, 13:17:22

6 ответов


25

эти коды будут определять, является ли текущий зарегистрированный пользователь суперпользователем или нет -

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

этот код будет проверять, что сопоставляется с полномочием «Суперпользователя» в глобальной конфигурации, а не только на уровне компонентов. Проверьте это сами по сравнению с другими способами.

ответил dev-m 6 J0000006Europe/Moscow 2014, 15:57:24
7

Чтобы определить статус «Суперпользователя», вы должны проверить $user->isRoot. Это свойство устанавливается после того, как первая проверка авторизации будет выполнена, и пользователь будет обнаружен как супер-админ.

Однако обычно вам действительно лучше проверить, есть ли у пользователя определенные разрешения, как описано в других ответах.

ответил Bakual 6 J0000006Europe/Moscow 2014, 18:17:02
4

Попробуйте это,

$user  = JFactory::getUser();

$user_groups = $user->groups;

print_r($user_groups);

Это вернет массив, по умолчанию пользователи Joomla Admin Super admin (группы 8) и администратор (группа 7).

Вы можете проверить, что в массиве есть какие-либо из этих значений, тогда он должен быть пользователем-администратором. Если вы создали пользовательскую группу пользователей, тогда вам нужно проверить #__usergroups parent Id тоже.

Надеюсь, что это поможет.

ответил Jobin Jose 6 J0000006Europe/Moscow 2014, 13:35:03
4

Вы можете использовать условие, чтобы отказаться от того, кто не находится в определенной группе.

$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;
ответил Adam Tremblay Lavoie 11 PM000000100000003631 2015, 22:54:36
2

Попробуйте ввести код для проверки того, является ли пользователь входа супер администратором или другими пользователями ...

$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';
}
ответил PCMShaper 2 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 02 Sep 2015 05:03:46 +0300 2015, 05:03:46
0

Joomla @since 3.2, поле UserGroupList использует это для проверки:

$isSuperUser = JFactory::getUser()->authorise('core.admin');
ответил Pedro Bicudo Maschio 28 +03002017-10-28T23:35:01+03:00312017bEurope/MoscowSat, 28 Oct 2017 23:35:01 +0300 2017, 23:35:01

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132