📌 요구사항 및 분석
관리자에 상점에서 별도로 사용하고자 하는 메뉴를 추가하고자 함.
해당 메뉴들은 고도몰에서 제공하지 않는 메뉴로, 상점에서 상점 관리에 필요한 별도의 기능을 구현하기 위한 메뉴를 추가하는 것임.
📝 개선안 정리
관리자 메뉴에 다음과 같은 메뉴 추가
3차 메뉴 : 기본설정 > 메뉴 정책 > 메뉴 관리
🛠️ 튜닝 진행
adminMenuSort(관리자 메뉴 순서), adminMenuNo(관리자 메뉴 고유 번호) 값을 확인합니다.
아래 SELECT 쿼리를 실행하여 마지막 관리자 메뉴 순서 값을 확인합니다.
Copy SELECT max(adminMenuSort)
FROM `es_adminMenu`
WHERE adminMenuDepth = 1
AND adminMenuType = 'd'; # d = 본사 메뉴, s = 공급사 메뉴
다음으로 아래 SELECT 쿼리를 실행하여 마지막 관리자 메뉴 고유 번호를 확인합니다.
Copy SELECT adminMenuNo
FROM `es_adminMenu`
WHERE adminMenuNo LIKE 'prefix%'
ORDER BY adminMenuNo DESC
LIMIT 0, 1;
Copy # 실행 결과 (예시)
prefix00119
아래 INSERT 쿼리를 실행하여 필요한 관리자 1차 메뉴를 추가합니다.
Copy INSERT INTO `es_adminMenu` (adminMenuNo, adminMenuType, adminMenuProductCode, adminMenuPlusCode,
adminMenuCode, adminMenuDepth, adminMenuParentNo, adminMenuSort, adminMenuName,
adminMenuUrl, adminMenuDisplayType, adminMenuDisplayNo, adminMenuSettingType,
adminMenuEcKind, regDt)
VALUES ('prefix00120', 'd', 'godomall', null,
'setting', '1', 'setting', '101', '환경저장',
'setting.php', 'y', 'godo00000, 'd', 'p', now());
관리자페이지에서 변경된 1차 메뉴를 확인합니다.
📌 관리자 2차 메뉴 추가
아래 SELECT 쿼리를 실행하여 추가하고자 하는 2차 메뉴의 1차 메뉴 고유번호를 확인합니다.
Copy SELECT adminMenuNo
FROM `es_adminMenu`
WHERE adminMenuDepth = 1
AND adminMenuType = 'd'
AND adminMenuName = '기본설정';
Copy # 실행 결과 (예시)
godo00001
1차 메뉴인 (기본설정)의 메뉴에서 2차 메뉴의 최대 정렬 번호를 확인합니다.
Copy SELECT max(adminMenuSort)
FROM `es_adminMenu`
WHERE adminMenuDepth = 2
AND adminMenuType = 'd'
AND adminMenuParentNo = 'godo00001';
다음으로 아래 SELECT 쿼리를 실행하여 마지막 관리자 메뉴 고유 번호를 확인합니다.
Copy SELECT adminMenuNo
FROM `es_adminMenu`
WHERE adminMenuNo LIKE 'prefix%'
ORDER BY adminMenuNo DESC
LIMIT 0, 1;
아래 INSERT 쿼리를 실행하여 필요한 관리자 2차 메뉴를 추가합니다.
Copy INSERT INTO `es_adminMenu` (adminMenuNo, adminMenuType, adminMenuProductCode, adminMenuPlusCode,
adminMenuCode, adminMenuDepth, adminMenuParentNo, adminMenuSort, adminMenuName,
adminMenuUrl, adminMenuDisplayType, adminMenuDisplayNo, adminMenuSettingType,
adminMenuEcKind, regDt)
VALUES ('prefix00121', 'd', 'godomall', null,
'menu', '2', 'godo00001', '101', '메뉴 정책',
null, 'y', 'godo00000', 'd', 'p', now());
2차 메뉴는 1개 이상의 3차 메뉴가 등록되어야 노출됩니다.
📌 관리자 3차 메뉴 추가
아래 SELECT 쿼리를 실행하여 추가하고자 하는 3차 메뉴의 2차 메뉴 고유번호를 확인합니다.
위 본사 관리자의 (메뉴 관리)이라는 3차 메뉴를 추가하려면 DataBase > es_adminMenu
접속하신 다음 아래 Query 를 실행합니다.
2차 메뉴인 (메뉴 정책)의 메뉴 고유번호를 확인합니다.
Copy SELECT adminMenuNo
FROM `es_adminMenu`
WHERE adminMenuDepth = 2
AND adminMenuType = 'd'
AND adminMenuName = '메뉴 정책';
Copy # 실행 결과 (예시)
prefix00121
2차 메뉴인 (메뉴 정책)의 메뉴에서 3차 메뉴의 최대 정렬 번호를 확인합니다.
Copy SELECT max(adminMenuSort)
FROM `es_adminMenu`
WHERE adminMenuDepth = 3
AND adminMenuType = 'd'
AND adminMenuParentNo = 'prefix00121';
다음으로 아래 SELECT 쿼리를 실행하여 마지막 관리자 메뉴 고유 번호를 확인합니다.
Copy SELECT adminMenuNo
FROM `es_adminMenu`
WHERE adminMenuNo LIKE 'prefix%'
ORDER BY adminMenuNo DESC
LIMIT 0, 1;
Copy # 실행 결과 (예시)
prefix00121
아래 INSERT 쿼리를 실행하여 필요한 관리자 3차 메뉴를 추가합니다.
Copy INSERT INTO `es_adminMenu` (adminMenuNo, adminMenuType, adminMenuProductCode, adminMenuPlusCode,
adminMenuCode, adminMenuDepth, adminMenuParentNo, adminMenuSort, adminMenuName,
adminMenuUrl, adminMenuDisplayType, adminMenuDisplayNo, adminMenuSettingType,
adminMenuEcKind, regDt)
VALUES ('prefix00122', 'd', 'godomall', null,
'menu_management', '3', 'prefix00121', '1001', '메뉴 관리',
'menu_management.php', 'y', null, 'd', 'p', now());
관리자 페이지 > 기본 설정 메뉴에서 추가된 2, 3차 메뉴를 확인합니다.
📌 관리자 메뉴별 권한 설정
권한 설정은 '권한없음 / 읽기 / 읽기+쓰기' 의 3가지 조건으로 제공됩니다.
읽기 : 메뉴의 내용 확인은 허용하나 정보 변경은 허용 안함
읽기+쓰기 : 메뉴의 내용 확인 및 정보 변경까지 제한 없이 모두 허용함
쓰기 제한 추가 예시
관리자 메뉴 페이지에 해당되는 컨트롤러에서 post()
함수를 통해 쓰기 제한 스크립트를 정의합니다.
Copy <?php
class UserPageController extends \Controller\Admin\Controller
{
public function post()
{
// 관리자 메뉴 쓰기 권한에 따른 쓰기 기능 제한
$writable = $this->getAdminMenuWritableAuth();
if ($writable['check'] === false) {
$returnMenuAccessAuth = [];
$returnMenuAccessAuth[] = '$("#frmBase").validate().destroy();';
$returnMenuAccessAuth[] = '$("#frmBase").submit(function(){ dialog_alert("__PAGE_TITLE__의 쓰기 권한이 없습니다. 권한은 대표운영자에게 문의하시기 바랍니다."); return false; });';
$returnMenuAccessAuth = array_map(function($script) use ($writable) {return str_replace("__PAGE_TITLE__", $writable['title'], $script);}, $returnMenuAccessAuth);
$this->setData('menuAccessAuth', implode("\n", $returnMenuAccessAuth));
}
}
}
🔖 결과 확인
📌 관리자 1차 메뉴 추가
📌 관리자 2, 3차 메뉴 추가