Админка с несколькими администраторами
Админка с несколькими администраторами
Суть такова. Есть один главный админ и от 0 до .. второстепенных админов.
У главного админа должны быть все панели второстепенных админов. У каждого второстепенного админа только своя панель (например свой раздел сайта).
Помогите, пожалуйста, советом. Каким образом лучше и легче реализовать такую схему?
У главного админа должны быть все панели второстепенных админов. У каждого второстепенного админа только своя панель (например свой раздел сайта).
Помогите, пожалуйста, советом. Каким образом лучше и легче реализовать такую схему?
Re: Админка с несколькими администраторами
RBAC - ROLE BASED ACCESS CONTROL, разберитесь с ним, посмотрите туториалы, вам все сразу станет ясно
Re: Админка с несколькими администраторами
как разберетесь что куда, назначайте пользователям роли (мид адим, супер админ и тд на ваше усмотрение) и в завизсимости от их роли в акшионе парсите контент который вывести.linudu писал(а): ↑2019.03.25, 12:51 Суть такова. Есть один главный админ и от 0 до .. второстепенных админов.
У главного админа должны быть все панели второстепенных админов. У каждого второстепенного админа только своя панель (например свой раздел сайта).
Помогите, пожалуйста, советом. Каким образом лучше и легче реализовать такую схему?
Re: Админка с несколькими администраторами
ещё можно сделать в БД isAdmin, null кинуть для обычного юзера, а далее по уровням например, 1 - первый уровень админки и ему давай определённые возможности и тд, главного админа можно сделать или уровнем каким ты хочешь, или сделать так же в БД например senior_admin. Как-то так можно ещё.linudu писал(а): ↑2019.03.25, 12:51 Суть такова. Есть один главный админ и от 0 до .. второстепенных админов.
У главного админа должны быть все панели второстепенных админов. У каждого второстепенного админа только своя панель (например свой раздел сайта).
Помогите, пожалуйста, советом. Каким образом лучше и легче реализовать такую схему?
Re: Админка с несколькими администраторами
yii2-rbac как его юзать вообще?zxczxc12 писал(а): ↑2019.03.29, 01:28 Все проблемы решает
https://github.com/dektrium/yii2-user
https://github.com/dektrium/yii2-rbac
Re: Админка с несколькими администраторами
У этой шляпы есть превосходный веб-интерфейс для бекендаShotty писал(а): ↑2019.03.29, 17:25yii2-rbac как его юзать вообще?zxczxc12 писал(а): ↑2019.03.29, 01:28 Все проблемы решает
https://github.com/dektrium/yii2-user
https://github.com/dektrium/yii2-rbac
http://prntscr.com/n4s8ce
Я при установке приложения прописываю все основные роля :
Код: Выделить всё
<?php
namespace console\controllers\commands;
use Yii;
use yii\console\Controller;
use yii\helpers\Console;
class RbacController extends Controller
{
public function actionIndex()
{
Console::output("\nSet RBAC rules");
$auth = Yii::$app->authManager;
$auth->removeAll();
/**
* Определение ролей
*/
$user = $auth->createRole('user');
$user->description = 'Роль пользователя';
$auth->add($user);
$moderator = $auth->createRole('moderator');
$moderator->description = 'Роль модератора';
$auth->add($moderator);
$auth->addChild($moderator, $user);
$content_manager = $auth->createRole('content-manager');
$content_manager->description = 'Роль контент-менеджера';
$auth->add($content_manager);
$auth->addChild($content_manager,$user);
$admin = $auth->createRole('admin');
$admin->description = 'Роль администратора';
$auth->add($admin);
// Инициирование учетной записи userId=1 роли админа
$auth->assign($admin, 1);
/*---------------------------------------------------------------*/
/**
* System settings
*/
$systemDirAccess = $auth->createPermission('systemDirAccess');
$systemDirAccess->description = 'Доступ к каталогу "Система"';
$auth->add($systemDirAccess);
$systemSettingsAccess = $auth->createPermission('systemSettingsAccess');
$systemSettingsAccess->description = 'Доступ к "Системные настройки"';
$auth->add($systemSettingsAccess);
$robotsAccess = $auth->createPermission('robots');
$robotsAccess->description = 'Доступ к "Файл robots.txt"';
$auth->add($robotsAccess);
$systemLogAccess = $auth->createPermission('systemLog');
$systemLogAccess->description = 'Доступ к "System log"';
$auth->add($systemLogAccess);
$loginLogAccess = $auth->createPermission('loginLog');
$loginLogAccess->description = 'Доступ к "Login log"';
$auth->add($loginLogAccess);
/*------------------------------------------*/
/**
* Transaction log
*/
$transactionLogAccess = $auth->createPermission('transactionLog');
$transactionLogAccess->description = 'Доступ к "Лог транзакци"';
$auth->add($transactionLogAccess);
/*------------------------------------------*/
/**
* Content management settings
*/
$contentDirAccess = $auth->createPermission('contentDirAccess');
$contentDirAccess->description = 'Доступ к каталогу "Контент"';
$auth->add($contentDirAccess);
$customPagesAccess = $auth->createPermission('customPages');
$customPagesAccess->description = 'Доступ к "Страницы"';
$auth->add($customPagesAccess);
$articlesAccess = $auth->createPermission('articles');
$articlesAccess->description = 'Доступ к "Статьи"';
$auth->add($articlesAccess);
$newsAccess = $auth->createPermission('news');
$newsAccess->description = 'Доступ к "Новости"';
$auth->add($newsAccess);
/*------------------------------------------*/
/**
* TranslateManager access
*/
$translateManager = $auth->createPermission('translateManager');
$translateManager->description = 'Доступ к переводу контента';
$auth->add($translateManager);
/*------------------------------------------*/
/**
* FirewallManager access
*/
$firewallManager = $auth->createPermission('firewall');
$firewallManager->description = 'Доступ к модулю Firewall';
$auth->add($firewallManager);
/*------------------------------------------*/
$usersManagerAccess = $auth->createPermission('usersManager');
$usersManagerAccess->description = 'Доступ к "Пользователи"';
$auth->add($usersManagerAccess);
/**
* SupportManager access
*/
$supportAccess = $auth->createPermission('support');
$supportAccess->description = 'Доступ к "Техподдержка"';
$auth->add($supportAccess);
/*------------------------------------------*/
$adminPanelAccess = $auth->createPermission('adminPanelAccess');
$adminPanelAccess->description = 'Доступ к залогиниванию в админскую панель';
$auth->add($adminPanelAccess);
/**
* Определение разрешений
*/
// Разрешения для роли admin
$auth->addChild($admin, $content_manager);
$auth->addChild($admin, $user);
$auth->addChild($admin, $moderator);
$auth->addChild($admin, $adminPanelAccess);
// Разрешения для роли content-manager
$auth->addChild($content_manager, $adminPanelAccess);
$auth->addChild($content_manager, $translateManager);
$auth->addChild($content_manager, $contentDirAccess);
$auth->addChild($content_manager, $articlesAccess);
// Назначение роли пользователя
$auth = Yii::$app->authManager;
$auth->assign($auth->getRole(\common\models\User::ROLE_ADMIN), 2);
Console::output('Success! RBAC roles has been added.');
}
}
...
if(Yii::$app->user->can('moderator')){
print "вы модератор";
}
Re: Админка с несколькими администраторами
а зачем такой велосипед писать, если можно сделать поле в таблице юзера роль, и там прописать, типо user,admin, moderator и тд, и в зависимости от роли давать доступ к содержимому?zxczxc12 писал(а): ↑2019.03.29, 21:46У этой шляпы есть превосходный веб-интерфейс для бекендаShotty писал(а): ↑2019.03.29, 17:25yii2-rbac как его юзать вообще?zxczxc12 писал(а): ↑2019.03.29, 01:28 Все проблемы решает
https://github.com/dektrium/yii2-user
https://github.com/dektrium/yii2-rbac
http://prntscr.com/n4s8ce
Я при установке приложения прописываю все основные роля :
далее в коде где нужно проверить имеет ли права пользователь например модератора то :Код: Выделить всё
<?php namespace console\controllers\commands; use Yii; use yii\console\Controller; use yii\helpers\Console; class RbacController extends Controller { public function actionIndex() { Console::output("\nSet RBAC rules"); $auth = Yii::$app->authManager; $auth->removeAll(); /** * Определение ролей */ $user = $auth->createRole('user'); $user->description = 'Роль пользователя'; $auth->add($user); $moderator = $auth->createRole('moderator'); $moderator->description = 'Роль модератора'; $auth->add($moderator); $auth->addChild($moderator, $user); $content_manager = $auth->createRole('content-manager'); $content_manager->description = 'Роль контент-менеджера'; $auth->add($content_manager); $auth->addChild($content_manager,$user); $admin = $auth->createRole('admin'); $admin->description = 'Роль администратора'; $auth->add($admin); // Инициирование учетной записи userId=1 роли админа $auth->assign($admin, 1); /*---------------------------------------------------------------*/ /** * System settings */ $systemDirAccess = $auth->createPermission('systemDirAccess'); $systemDirAccess->description = 'Доступ к каталогу "Система"'; $auth->add($systemDirAccess); $systemSettingsAccess = $auth->createPermission('systemSettingsAccess'); $systemSettingsAccess->description = 'Доступ к "Системные настройки"'; $auth->add($systemSettingsAccess); $robotsAccess = $auth->createPermission('robots'); $robotsAccess->description = 'Доступ к "Файл robots.txt"'; $auth->add($robotsAccess); $systemLogAccess = $auth->createPermission('systemLog'); $systemLogAccess->description = 'Доступ к "System log"'; $auth->add($systemLogAccess); $loginLogAccess = $auth->createPermission('loginLog'); $loginLogAccess->description = 'Доступ к "Login log"'; $auth->add($loginLogAccess); /*------------------------------------------*/ /** * Transaction log */ $transactionLogAccess = $auth->createPermission('transactionLog'); $transactionLogAccess->description = 'Доступ к "Лог транзакци"'; $auth->add($transactionLogAccess); /*------------------------------------------*/ /** * Content management settings */ $contentDirAccess = $auth->createPermission('contentDirAccess'); $contentDirAccess->description = 'Доступ к каталогу "Контент"'; $auth->add($contentDirAccess); $customPagesAccess = $auth->createPermission('customPages'); $customPagesAccess->description = 'Доступ к "Страницы"'; $auth->add($customPagesAccess); $articlesAccess = $auth->createPermission('articles'); $articlesAccess->description = 'Доступ к "Статьи"'; $auth->add($articlesAccess); $newsAccess = $auth->createPermission('news'); $newsAccess->description = 'Доступ к "Новости"'; $auth->add($newsAccess); /*------------------------------------------*/ /** * TranslateManager access */ $translateManager = $auth->createPermission('translateManager'); $translateManager->description = 'Доступ к переводу контента'; $auth->add($translateManager); /*------------------------------------------*/ /** * FirewallManager access */ $firewallManager = $auth->createPermission('firewall'); $firewallManager->description = 'Доступ к модулю Firewall'; $auth->add($firewallManager); /*------------------------------------------*/ $usersManagerAccess = $auth->createPermission('usersManager'); $usersManagerAccess->description = 'Доступ к "Пользователи"'; $auth->add($usersManagerAccess); /** * SupportManager access */ $supportAccess = $auth->createPermission('support'); $supportAccess->description = 'Доступ к "Техподдержка"'; $auth->add($supportAccess); /*------------------------------------------*/ $adminPanelAccess = $auth->createPermission('adminPanelAccess'); $adminPanelAccess->description = 'Доступ к залогиниванию в админскую панель'; $auth->add($adminPanelAccess); /** * Определение разрешений */ // Разрешения для роли admin $auth->addChild($admin, $content_manager); $auth->addChild($admin, $user); $auth->addChild($admin, $moderator); $auth->addChild($admin, $adminPanelAccess); // Разрешения для роли content-manager $auth->addChild($content_manager, $adminPanelAccess); $auth->addChild($content_manager, $translateManager); $auth->addChild($content_manager, $contentDirAccess); $auth->addChild($content_manager, $articlesAccess); // Назначение роли пользователя $auth = Yii::$app->authManager; $auth->assign($auth->getRole(\common\models\User::ROLE_ADMIN), 2); Console::output('Success! RBAC roles has been added.'); } }
...
if(Yii::$app->user->can('moderator')){
print "вы модератор";
}
Re: Админка с несколькими администраторами
1) где тут велосипед ?
я делаю то что было озвучено ( прописываю нужные мне роли в базу при первоначальной установке приложения, Просто мне так удобно )
2) приведенный пример rbac - модуля нужен что бы удобно было рулить ролями с веб интерфейса
конец истории
я делаю то что было озвучено ( прописываю нужные мне роли в базу при первоначальной установке приложения, Просто мне так удобно )
2) приведенный пример rbac - модуля нужен что бы удобно было рулить ролями с веб интерфейса
конец истории