diff --git a/examples/vue-app/src/App.vue b/examples/vue-app/src/App.vue index a62850f..dccc13d 100644 --- a/examples/vue-app/src/App.vue +++ b/examples/vue-app/src/App.vue @@ -292,7 +292,6 @@ const loginToConnectionMap = computed((): Record((resolve, reject) => { // eslint-disable-next-line @typescript-eslint/no-explicit-any let bc: any; @@ -107,27 +106,21 @@ export default class TelegramHandler extends AbstractLoginHandler { } }; - if (!this.params.redirectToOpener) { - bc = new BroadcastChannel<{ - error: string; - data: PopupResponse; - }>(`redirect_channel_${this.nonce}`, broadcastChannelOptions); - bc.addEventListener("message", async (ev: string) => { - await handleData(ev); - bc.close(); - verifierWindow.close(); - }); - } const postMessageEventHandler = async (postMessageEvent: MessageEvent) => { - if (!postMessageEvent.data) return; + if (!postMessageEvent.data) { + throw new Error("Invalid data received"); + } + if (this.finalURL.origin !== postMessageEvent.origin) { + throw new Error("Invalid origin received"); + } // make sure event is auth_result from telegram const ev = postMessageEvent.data; if (typeof ev != "string") { - return; + throw new Error("Invalid data type received"); } const { event } = (JSON.parse(ev) as PopupResponse) || {}; if (event && event !== "auth_result") { - return; + throw new Error("Invalid event received"); } window.removeEventListener("message", postMessageEventHandler); handleData(ev);