/**
  * 初始化rbac 默认设置
  */
 public function rbacInit()
 {
     Console::output('初始化RBAC数据 ....');
     $auth = Yii::$app->authManager;
     /* ================= 权限 ================= */
     $visitAdmin = $auth->createPermission('visitAdmin');
     $visitAdmin->description = '访问后台管理界面';
     $auth->add($visitAdmin);
     /* ================= 身份 ================= */
     $guest = $auth->createRole('guest');
     // 匿名用户
     $guest->description = '匿名用户';
     $auth->add($guest);
     $user = $auth->createRole('user');
     //普通用户
     $user->description = '普通用户';
     $auth->add($user, $guest);
     //普通用户 > 匿名用户
     $admin = $auth->createRole('admin');
     // 管理员
     $admin->description = '管理员';
     $auth->add($admin);
     $auth->addChild($admin, $user);
     // 管理员 > 普通用户
     $auth->addChild($admin, $visitAdmin);
     // 管理员可以访问后台
     $founder = $auth->createRole('founder');
     // 创始人
     $founder->description = '创始人';
     $auth->add($founder);
     $auth->addChild($founder, $admin);
     // 创始人 > 管理员
     Console::output('初始化RBAC数据完成 ....');
 }
 public function commentInit()
 {
     if (!$this->topic) {
         return;
     }
     Console::output('创建默认评论 ....');
     $comment = new Comment();
     $comment->setAttributes(['author_id' => 1, 'content' => '默认评论内容']);
     $message = $this->topic->addComment($comment, true) ? '成功' : '失败';
     Console::output('创建默认评论' . $message);
 }
 public function dbInit()
 {
     exit;
     if (Yii::$app->db->dsn !== null) {
         Yii::$app->db->open();
         return;
     }
     Console::output('需要初始并生成数据库设置 ....');
     $dbHost = Console::prompt('请输入数据库地址', ['default' => 'localhost']);
     $dbName = Console::prompt('请输入数据库名称(并确定数据库已建立)', ['default' => Yii::$app->name]);
     $dbUsername = Console::prompt('请输入数据库账户名', ['default' => 'root']);
     $dbPassword = Console::prompt('请输入数据库密码(默认为空)', ['default' => '']);
     $dbPrefix = Console::prompt('请输入数据库表前缀', ['default' => 'pre_']);
 }
 public function initMenu()
 {
     Console::output('初始化后台菜单 ....');
     /* ============= 添加后台菜单 ============= */
     //用户
     AdminHelper::addMenu('user', ['/user/admin/user/index'], '用户管理', ['icon' => 'fa-user', 'priority' => 10]);
     //rbac
     AdminHelper::addMenu('rbac', ['/user/admin/rbac/index'], '角色权限', ['subShow' => false, 'icon' => 'fa-group', 'priority' => 20]);
     AdminHelper::addSubMenu('rbac', 'roles', ['/user/admin/rbac/roles'], '角色列表');
     AdminHelper::addSubMenu('rbac', 'permissions', ['/user/admin/rbac/permissions'], '权限列表');
     //系统设置
     AdminHelper::addMenu('system', ['/admin/system/index'], '系统设置', ['icon' => 'fa-gears', 'priority' => 20]);
     Console::output('初始化后台菜单完成 ....');
 }
 /**
  * 用户创建交互程序
  * @param $userForm
  * @return mixed
  */
 private function saveUserData($userForm)
 {
     $authManager = Yii::$app->authManager;
     $founder = $authManager->getRole('founder');
     $userForm->username = Console::prompt('请先创建创始人用户', ['default' => 'admin']);
     $userForm->email = Console::prompt('请先创建创始人邮箱', ['default' => '*****@*****.**']);
     $userForm->password = Console::prompt('请先创建创始人密码', ['default' => 'admin']);
     if (!($user = $userForm->register())) {
         Console::output('输入数据验证错误');
         foreach ($userForm->getErrors() as $k => $v) {
             Console::output($k . ':' . PHP_EOL . implode(PHP_EOL, $v));
         }
         Console::output('请重新输入');
         $this->saveUserData($user);
     }
     $user->setAttributes([]);
     $success = $user->save();
     $uid = $success ? $user->id : 1;
     // 用户创建成功则指定用户id,否则指定id为1的用户为创始人.
     $founder && $authManager->assign($founder, $uid);
     // 指定创始人身份
     return $success;
 }