가이드
설정 페이지 추가
App 설정을 Resource로 저장하고 settings 메뉴에 화면을 연결하며 조회·수정 권한을 적용합니다.
App 운영자가 설정을 조회하고 수정하는 화면을 만듭니다. 설정값은 App Resource로 저장하고, 화면은 App 메뉴의 settings 그룹에 연결합니다.
설정 화면 구성
- Resource 만들기에서 데이터와 보호된 API를 먼저 만듭니다. 테넌트 공통인지 조직별 설정인지 업무 규칙으로 결정하세요. 아래 People 증명서 정책은 Legal Entity 범위입니다. 별도 통합 설정 화면을 만들 때만
--without-navigation으로 기본 메뉴 항목을 숨깁니다. - 생성된 화면을 그대로 쓰거나 App 화면 만들기에 따라 여러 Resource를 한 화면에 배치합니다. 컴포넌트 등록과 Manifest 경로 연결을 완료하세요. 각 API는 해당 Resource의 권한과 레코드 범위를 검사해야 하며, 페이지 공통 권한으로 수정 권한을 대신할 수 없습니다.
- App Menu 목적지 추가의 contribution에
groupId: 'settings'를 지정합니다.
packages/people/src/Contribution/PeopleCertificateSettings.php는 기존 증명서 설정 화면을 다음과 같이 연결합니다.
코드 예시
PHP
NavigationItem::make(
id: 'people-certificate-settings',
route: '/apps/people/settings/certificates',
icon: 'file-badge',
sort: 180,
labelKey: 'people.certificate.settings.title',
appKey: 'people',
contextId: 'app',
groupId: 'settings',
permission: 'people.certificate_policy.read',
),이 항목을 반환하는 클래스는 Nexia\Navigation\Contracts\NavigationContribution을 구현합니다. 같은 클래스에서 people.certificate_policy.update를 별도의 보호된 Legal Entity 권한으로 선언합니다. 적용할 때도 조회와 수정 권한을 분리하세요.
결과 확인
새 contribution 클래스는 discovery를 갱신해야 반영됩니다. 운영 가능한 테넌트에서 읽기 권한만 가진 사용자는 설정을 볼 수 있어야 하고, API에 직접 수정 요청을 보내면 거절되어야 합니다. 읽기 권한도 없는 사용자는 API로 설정 내용을 받을 수 없어야 합니다. 이 사례를 App 테스트하기의 패키지 테스트에 포함합니다.
설정 소유권 선택
| 필요한 설정 | 구현 위치 |
|---|---|
| 코드 목록, 버전, 유효기간 | 일반 App Resource |
| App 전용 단일 설정값 몇 개 | Policy를 갖춘 작은 singleton Resource |
| 관련 Resource 여러 개 | 화면은 하나, API 권한 검사는 Resource별로 유지 |
| 플랫폼 전체 설정 | 기존 플랫폼 기능 사용; host Site Configuration registry를 App에서 가져오지 않음 |
App 설정의 메뉴 위치는 App 내부입니다. 호스트 Settings Menu와 Site Configuration은 플랫폼이 관리합니다. 화면 구현은 다른 App 화면과 같은 SDK를 사용하며, 별도의 App 설정 저장 API는 없습니다.