diff --git a/public/javascript/home.js b/public/javascript/home.js deleted file mode 100644 index e69de29..0000000 diff --git a/public/javascript/login.js b/public/javascript/login.js deleted file mode 100644 index 36175b4..0000000 --- a/public/javascript/login.js +++ /dev/null @@ -1,72 +0,0 @@ -window.onload = function () { - if (!window.nostr) { - console.log('Nostr extension not present'); - document.querySelector('#login-button').disabled = true; - document.querySelector('#no-extension-nudges').style.display = 'block'; - } else { - console.log('Nostr extension present'); - } -}; - -async function login() { - let challengeResponse; - try { - challengeResponse = await fetch('/api/login/nostr-challenge', { - method: 'GET', - headers: { - 'Content-Type': 'application/json', - }, - }); - } catch (error) { - console.log(`Something went wrong: ${error}`); - return; - } - - const { challenge } = await challengeResponse.json(); - - let pubkey; - try { - pubkey = await window.nostr.getPublicKey(); - } catch (error) { - document.querySelector('#rejected-nostr-nudges').style.display = 'block'; - return; - } - const event = { - kind: 22242, - created_at: Math.floor(Date.now() / 1000), - tags: [['challenge', challenge]], - content: 'Sign this challenge to authenticate', - pubkey: pubkey, - }; - - let signedEvent; - try { - signedEvent = await window.nostr.signEvent(event); - } catch (error) { - document.querySelector('#rejected-nostr-nudges').style.display = 'block'; - return; - } - - let verifyResponse; - try { - verifyResponse = await fetch('/api/login/nostr-verify', { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify(signedEvent), - }); - } catch (error) { - console.log(`Something went wrong: ${error}`); - return; - } - - if (verifyResponse.status === 403) { - document.querySelector('#rejected-public-key').style.display = 'block'; - } - - if (verifyResponse.ok) { - document.querySelector('#sign-up-success').style.display = 'block'; - setTimeout(() => { - window.location.href = '/home'; - }, 1000); - } -} diff --git a/src/front/pages/login.js b/src/front/pages/login.js new file mode 100644 index 0000000..121f3e1 --- /dev/null +++ b/src/front/pages/login.js @@ -0,0 +1,81 @@ +const loginsFunction = () => { + window.onload = function () { + if (!window.nostr) { + console.log('Nostr extension not present'); + document.querySelector('#login-button').disabled = true; + document.querySelector('#no-extension-nudges').style.display = 'block'; + } else { + console.log('Nostr extension present'); + } + }; + + async function login() { + let challengeResponse; + try { + challengeResponse = await fetch('/api/login/nostr-challenge', { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + }, + }); + } catch (error) { + console.log(`Something went wrong: ${error}`); + return; + } + + const { challenge } = await challengeResponse.json(); + + let pubkey; + try { + pubkey = await window.nostr.getPublicKey(); + } catch (error) { + document.querySelector('#rejected-nostr-nudges').style.display = 'block'; + return; + } + const event = { + kind: 22242, + created_at: Math.floor(Date.now() / 1000), + tags: [['challenge', challenge]], + content: 'Sign this challenge to authenticate', + pubkey: pubkey, + }; + + let signedEvent; + try { + signedEvent = await window.nostr.signEvent(event); + } catch (error) { + document.querySelector('#rejected-nostr-nudges').style.display = 'block'; + return; + } + + let verifyResponse; + try { + verifyResponse = await fetch('/api/login/nostr-verify', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(signedEvent), + }); + } catch (error) { + console.log(`Something went wrong: ${error}`); + return; + } + + if (verifyResponse.status === 403) { + document.querySelector('#rejected-public-key').style.display = 'block'; + } + + if (verifyResponse.ok) { + document.querySelector('#sign-up-success').style.display = 'block'; + setTimeout(() => { + window.location.href = '/home'; + }, 1000); + } + } + + const loginButton = document.getElementById('login-button'); + loginButton.addEventListener('click', () => { + login(); + }); +}; + +loginsFunction(); diff --git a/src/views/login.ejs b/src/views/login.ejs index a4467ec..a954697 100644 --- a/src/views/login.ejs +++ b/src/views/login.ejs @@ -13,7 +13,7 @@
-
+
- +
- + diff --git a/webpack.config.js b/webpack.config.js index 9e61a4e..e51ce85 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -4,6 +4,7 @@ module.exports = { entry: { invite: './src/front/pages/invite.js', createProfile: './src/front/pages/createProfile.js', + login: './src/front/pages/login.js', }, output: { filename: '[name].bundle.js',