Skip to content

Commit

Permalink
feat: add embed iframe
Browse files Browse the repository at this point in the history
  • Loading branch information
darlanalves authored Jul 30, 2024
1 parent a4ac375 commit 7999940
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 26 deletions.
47 changes: 22 additions & 25 deletions assets/index.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -29,38 +29,35 @@ export async function isAuthenticated() {
return Boolean(r.ok && r.status < 300);
}

export function signIn(options) {
if (typeof options === 'boolean') {
options = { popup: options };
}

let popupOpen = false;
const { popup, embed } = options;
if (embed && popup) {
const iframe = document.createElement('iframe');
iframe.src = String(new URL("/embed", authDomain));
document.body.append(iframe);

window.addEventListener('message', (e) => {
if (e.origin !== authDomain) {
console.log('Discarded event', e);
return;
}

const { event, detail } = e.data;
if (event) {
events.dispatchEvent(new CustomEvent(event, { detail }));
}
});
let popupOpen = false;

export function useEmbedded() {
const iframe = document.createElement('iframe');
iframe.src = String(new URL("/embed", authDomain));
document.body.append(iframe);

window.addEventListener('message', (e) => {
if (e.origin !== authDomain) {
console.log('Discarded event', e);
return;
}

const { event, detail } = e.data;
if (event) {
events.dispatchEvent(new CustomEvent(event, { detail }));
}
});

setInterval(() => !popupOpen && iframe.contentWindow.postMessage('ping', authDomain), 1000);
}
setInterval(() => !popupOpen && iframe.contentWindow.postMessage('ping', authDomain), 1000 * 30);
}

export function signIn(popup) {
if (popup) {
const { innerWidth, innerHeight } = window;
const left = Math.round((innerWidth - 640)/2);
const top = Math.round((innerHeight - 480)/2);
const w = window.open(String(new URL("/login", authDomain)), 'signin', `popup,width=640,height=480,left=${left},top=${top}`);

popupOpen = true;
window.addEventListener('message', async (e) => {
const { event } = e.data;
Expand Down
2 changes: 1 addition & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ async function makeEmbedPage(req, res) {
const allowedOrigins = ${JSON.stringify(allowedOrigins)};
const profile = ${user ? JSON.stringify(user) : "null"};
window.addEventListener("message", function (event) {
if (!allowedOrigins.includes(event.origin)) {
if (!allowedOrigins.some(o => event.origin.endsWith(o))) {
console.log('Origin not allowed: ' + event.origin);
return;
}
Expand Down

0 comments on commit 7999940

Please sign in to comment.