diff --git a/public/confirm/index.html b/public/confirm/index.html deleted file mode 100644 index 9bd2a61a..00000000 --- a/public/confirm/index.html +++ /dev/null @@ -1,29 +0,0 @@ - -discours.io - - -
- Авторизация завершена, это окно закрывается по куче причин. -
- - - \ No newline at end of file diff --git a/src/components/Nav/Confirmed.scss b/src/components/Nav/Confirmed.scss new file mode 100644 index 00000000..4307f056 --- /dev/null +++ b/src/components/Nav/Confirmed.scss @@ -0,0 +1,6 @@ +.center { + display: flex; + justify-content: center; + align-items: center; + height: 420px; +} diff --git a/src/components/Nav/Confirmed.tsx b/src/components/Nav/Confirmed.tsx new file mode 100644 index 00000000..f870c83d --- /dev/null +++ b/src/components/Nav/Confirmed.tsx @@ -0,0 +1,18 @@ +import './Confirmed.scss' +import { onMount } from 'solid-js' +import { t } from '../../utils/intl' + +export const Confirmed = (props: { token?: string }) => { + onMount(() => { + const token = props.token ?? document.cookie.split(';').at(0).replace('token=', '') + window.addEventListener('mousemove', () => window.close()) + window.addEventListener('keydown', () => window.close()) + window.addEventListener('click', () => window.close()) + localStorage.setItem('token', token) + }) + return ( + <> +
{t('You was successfully authorized')}
+ + ) +} diff --git a/src/graphql/types.gen.ts b/src/graphql/types.gen.ts index 8c85b2f2..3ef4b19c 100644 --- a/src/graphql/types.gen.ts +++ b/src/graphql/types.gen.ts @@ -767,7 +767,6 @@ export type User = { updatedAt?: Maybe username: Scalars['String'] userpic?: Maybe - wasOnlineAt?: Maybe } export type UserFollowings = { diff --git a/src/pages/api/sendlink.ts b/src/pages/api/sendlink.ts new file mode 100644 index 00000000..2ee8a8a5 --- /dev/null +++ b/src/pages/api/sendlink.ts @@ -0,0 +1,31 @@ +import Mailgun from 'mailgun.js' +import FormDataPackage from 'form-data' + +const domain: string = process.env.MAILGUN_DOMAIN +const key: string = process.env.MAILGUN_API_KEY +const mailgun = new Mailgun(FormDataPackage) +const mg = mailgun.client({ + username: 'api', + key, + url: 'https://api.mailgun.net' +}) + +export type EmailContent = { + to: string | string[] + subject: string + text: string + html?: string + from?: string +} + +const from = `discours.io ` + +export default async function handler(req, res) { + const { to, subject } = req.query + const token = '' // FIXME + const text = 'Follow the link to confirm email: https://new.discours.io/confirm/' + token // TODO: use templates here + mg.messages + .create(domain, { to, subject, text, from } as EmailContent) + .then((_) => res.status(200)) + .catch(console.error) +} diff --git a/src/pages/confirm/[token].astro b/src/pages/confirm/[token].astro new file mode 100644 index 00000000..eff6ee5d --- /dev/null +++ b/src/pages/confirm/[token].astro @@ -0,0 +1,11 @@ +--- +import { Confirmed } from '../../components/Nav/Confirmed' + +const token = Astro.params.token?.toString() || '' +--- + +discours.io + + + + diff --git a/src/pages/confirm/index.astro b/src/pages/confirm/index.astro new file mode 100644 index 00000000..a5c85872 --- /dev/null +++ b/src/pages/confirm/index.astro @@ -0,0 +1,9 @@ +--- +import { Confirmed } from '../../components/Nav/Confirmed' +--- + +discours.io + + + +