PHP Class Xpressengine\Settings\SettingsHandler
# SettingsHandler
## 관리페이지 메뉴 추가하기
플러그인에서는 관리페이지의 좌측에 노출되는 메뉴 트리에 자유롭게 메뉴를 추가할 수 있습니다.
메뉴를 추가할 때에는
Register에 등록해야 합니다. 등록키는
settings/menu이어야 합니다.
php
등록할 메뉴 아이디를 지정. 다른 메뉴와 겹치지 않도록 고유한 아이디를 정의해야 함.
$menuId = 'member.social_login';
등록할 메뉴의 정보를 지정.
$menuInfo = [
'title' => '소셜로그인',
'description' => '소셜로그인을 설정하는 방법을 안내합니다.',
'display' => true,
'ordering' => 350
];
메뉴를 등록한다.
Register::push('settings/menu', $menuId, $menuInfo);
메뉴가 출력되는 위치는 메뉴의 아이디로 지정할 수 있습니다. 메뉴 아이디는 dot(.)을 구분자로 하여 부모 메뉴의 아이디를 앞에 붙여주면 됩니다.
위 코드에서는 메뉴의 아이디가
member.social_login이기 때문에 회원(
member) 메뉴의 자식 메뉴로 등록됩니다.
## 관리페이지 메뉴에 링크 연결하기
플러그인은 route를 등록할 때, route와 메뉴를 연결할 수 있습니다. 자동으로 해당 route의 주소가 메뉴에 연결됩니다.
php
소셜로그인 관리 페이지의 Route 추가.
'settings_menu' 항목을 사용하여 이 Route에 메뉴를 연결.
Route::settings(
'social_login',
function () {
Route::get('/', [
'as' => 'social_login::settings',
'uses' => function () {
return \XePresenter::make('social_login::tpl.setting');
},
'settings_menu' => 'member.social_login'
]);
}
);
## 관리페이지 접근권한 추가하기
XpressEngine은 기본적으로 최고관리자(super user)만 관리페이지를 접근하는 것을 허용합니다.
만약 최고관리자 이외의 회원에게 특정 관리페이지에 접근할 수 있는 권한을 부여하려면 접근권한을 지정해주면 됩니다.
접근권한을 지정해주는 방법은 관리페이지 메뉴를 등록하는 방법과 유사합니다.
단, Register key는
settings/permission을 사용해야 합니다.
php
$id = 'member.edit';
$permission = [
'title' => '회원정보수정',
'tab' => '회원관리' // 카테고리
];
회원정보수정 권한 등록
Register::push('settings/permission', $id, $permission);
등록한 접근권한을 부여할 회원을 지정하려면 관리페이지의 [설정 > 관리페이지 권한 설정] 메뉴에 접속하십시오.
## 관리 페이지 접근권한 부여하기
위에서 등록한 '회원정보수정' 권한을 '회원수정' 페이지에 지정하려면 '회원수정' 페이지의 route와 권한을 연결하면 됩니다.
그러면 해당 페이지에 접근하려고 할 때, 자동으로 권한 검사를 거치게 됩니다.
php
'permission' 항목을 사용하여 이 Route에 권한을 부여.
Route::settings(
'member',
function () {
Route::get('{id}/edit', [
'as' => 'settings.user.edit',
'uses' => 'Member\Settings\UserController@getEdit',
'permission' => 'member.edit',
]
});
);
Show file
Open project: xpressengine/xpressengine
Protected Properties
Public Methods
Method |
Description |
|
__construct ( Container $container, Router $router, ConfigManager $configManger, Illuminate\Contracts\Auth\Access\Gate $gate ) |
constructor
render 필드가 있을 경우 메뉴를 출력할 때, render에 지정된 closure가 반환하는 문자열을 그대로 출력한다. |
|
getConfig ( string $config ) : ConfigEntity |
관리페이지 관련 설정을 조회한다. |
|
getPermissionList ( boolean $groupByTab = true ) : array |
관리권한 목록을 반환한다. $sortByTab이 true일 경우 tab 필드별로 group by하여 반환한다. |
|
getSelectedMenu ( boolean $isSuper ) : SettingsMenu |
현재 request에 해당하는 메뉴를 반환한다. 메뉴목록이 아직 생성되지 않았다면 메뉴 목록을 먼저 만든다. |
|
getSettingsMenus ( boolean $isSuper ) : SettingsMenu[] |
관리페이지 메뉴 목록을 반환한다. |
|
setConfig ( string $configName, array $config ) : void |
관리페이지 관련 설정을 저장한다. |
|
Protected Methods
Private Methods
Method Details
__construct()
public method
constructor
render 필드가 있을 경우 메뉴를 출력할 때, render에 지정된 closure가 반환하는 문자열을 그대로 출력한다.
public __construct ( Container $container, Router $router, ConfigManager $configManger, Illuminate\Contracts\Auth\Access\Gate $gate ) |
$container |
Xpressengine\Register\Container |
XpressEngine Register 등록된 관리메뉴와 관리권한을 조회할 때 사용한다. |
$router |
Illuminate\Routing\Router |
router |
$configManger |
Xpressengine\Config\ConfigManager |
관리페이지 관련 설정 정보를 조회/저장할 때 사용한다. |
$gate |
Illuminate\Contracts\Auth\Access\Gate |
관리페이지 권한 정보를 조회/저장할 때 사용한다. |
getConfig()
public method
public getConfig ( string $config ) : ConfigEntity |
$config |
string |
설정 키 |
return |
Xpressengine\Config\ConfigEntity |
|
getPermission()
protected method
주어진 관리페이지 권한에 해당하는 권한목록을 반환한다.
getPermissionList()
public method
관리권한 목록을 반환한다. $sortByTab이 true일 경우 tab 필드별로 group by하여 반환한다.
setConfig()
public method
Property Details