Kendi arayüzünü Restomenum paneli içinde bir iframe olarak gösterirsin. Sayfayı sen barındırırsın; panel onu güvenli (sandboxed) bir iframe'de yükler. Veri alışverişi yalnız App Bridge (postMessage) üzerinden, kurulumun verdiği scope'larla yapılır.
Restomenum Paneli
│ <iframe src="customUiOrigin + path" sandbox> (panel, sayfanı gömer)
▼
Senin iframe sayfan ──App Bridge (postMessage, origin-pinli)──► Panel
│ • bridgeCall('getSessionToken') → { token } (JWT) → tenant kimliği
│ • izinli veri istek/aksiyonları (kurulum scope'una göre)
▼
Senin backend'in ◄── session token doğrula ── (kendi API'n)Sayfan panelin bir parçası gibi görünür ama izole çalışır: Restomenum oturum çerezine/DOM'una erişemez. Tüm etkileşim App Bridge köprüsünden geçer ve eklentinin scope'larıyla sınırlıdır.
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
| id | string | ✓ | Benzersiz. nav.pageId ve settingsPageId bununla eşleşir. |
| customUiOrigin | string (https) | ✓ | iframe origin'i. Sürümün tek Origin'iyle aynıdır (editör otomatik atar). |
| path | string | – | iframe yolu (varsayılan /). Tam src = origin + path. |
| title | i18n obj | – | Başlık (text-only render) — dil haritası: Çoklu Dil (i18n). |
"pages": [
{
"id": "dashboard", // benzersiz; nav.pageId / settingsPageId ile eşleşir
"customUiOrigin": "https://app.eklentim.com", // = sürümün Origin'i (tek-apex)
"path": "/embed", // iframe src = customUiOrigin + path
"title": { "tr": "Acme Panosu" }
}
]
// gerekli scope: "ui:page"ui:page scope'unu iste ve bir pages[] öğesi ekle.frame-ancestors ekle — yalnız panel çerçeveleyebilsin (clickjacking koruması, onayda denetlenir). İzinli kaynaklar: frame-ancestors https://app.restomenum.com https://test-restomenu.web.app http://localhost:* https://localhost:* http://127.0.0.1:* https://127.0.0.1:* — sabit panel origin'leri + offline/yerel kurulum (localhost, değişken port).openUrl kullan — window.open / <a target="_blank"> sandbox'ta çalışmaz.frame-ancestors ile yalnız panel kaynaklarına — frame-ancestors https://app.restomenum.com https://test-restomenu.web.app http://localhost:* https://localhost:* http://127.0.0.1:* https://127.0.0.1:* (sabit origin'ler + offline/yerel kurulum) — izin vermeli ve App Bridge mesajlarını wildcard '*' ile değil panel origin'ine pinli göndermeli + gelen event.origin'i desenle doğrulamalı (yerel panelin portu değişkendir; düz liste karşılaştırması onu reddeder). Detay: iframe Güvenliği.