/**
  * getMenuPermissions
  *
  * @return MenuPermission[]
  * @throws \Xpressengine\Permission\Exceptions\WrongInstanceException
  */
 public function getMenuPermissions()
 {
     if (count(static::$permissions) == 0) {
         static::$permissions = $this->permission->makesByType('menu');
     }
     return static::$permissions;
 }
Exemplo n.º 2
0
 public function testMoveFromChildToAnotherChild()
 {
     list($auth, $routes, $repo) = $this->getMocks();
     $instance = new Factory($auth, $routes, $repo);
     $mockParent = m::mock('Xpressengine\\Permission\\Registered');
     $mockRegistered = m::mock('Xpressengine\\Permission\\Registered');
     $mockRegistered->siteKey = 'default';
     $mockRegistered->type = 'instance';
     $mockRegistered->shouldReceive('getParent')->andReturn($mockParent);
     $mockToRegistered = m::mock('Xpressengine\\Permission\\Registered');
     $mockToRegistered->type = 'instance';
     $repo->shouldReceive('findByTypeAndName')->once()->with('default', 'instance', 'valid.to')->andReturn($mockToRegistered);
     $repo->shouldReceive('foster')->once()->with($mockRegistered, 'valid.to');
     $instance->move($mockRegistered, 'valid.to');
 }
 /**
  * 관리페이지 메뉴 목록을 생성한다. 현재 요청의 user와 route 정보를 이용하여 선택된 메뉴, 감추어야할 메뉴를 설정한다.
  *
  * @param Router  $router  router
  * @param boolean $isSuper 최고관리자 여부
  *
  * @return void
  */
 protected function makeMenuList(Router $router, $isSuper)
 {
     // 등록된 menu list를 가져온다.
     $menus = $this->getRegisteredMenus();
     // menu를 tree로 구성한다.
     $this->menuList = new TreeCollection($menus);
     // menu가 지정된 route 목록을 가져온다.
     $routes = $router->getRoutes()->getSettingsMenuRoutes();
     // 각 메뉴에 해당되는 route를 지정한다.
     foreach ($routes as $route) {
         /** @var Route $route */
         $menuIds = array_get($route->getAction(), 'settings_menu', []);
         // 만약 route에 permission 정보가 있고, 그 permission을 현재 member가 통과하지 못하면 display=false로 지정한다.
         $permissions = array_get($route->getAction(), 'permission', []);
         $visible = false;
         if (!$isSuper) {
             foreach ((array) $permissions as $permissionId) {
                 $registered = $this->permissions->make('settings', $permissionId);
                 if ($registered->ables(Action::ACCESS) === true) {
                     $visible = true;
                 }
             }
         } else {
             $visible = true;
         }
         // 메뉴에 route 지정,
         foreach ((array) $menuIds as $menuId) {
             $menu = $this->menuList[$menuId];
             $menu->route = $route;
             if ($visible === false) {
                 $menu->display = false;
             }
         }
     }
     $this->setSelectedMenu($router->current());
 }
Exemplo n.º 4
0
 /**
  * 게시판 기본 권한 설정
  *
  * @param Grant $grant grant information object
  * @return void
  */
 public function setDefault(Grant $grant)
 {
     $this->permissions->register('instance', $this->prefix, $grant);
 }