/** * 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; }
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()); }
/** * 게시판 기본 권한 설정 * * @param Grant $grant grant information object * @return void */ public function setDefault(Grant $grant) { $this->permissions->register('instance', $this->prefix, $grant); }