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
+
+
+
+