From 4125cbb3a24b1823bc3554692459b696f394f015 Mon Sep 17 00:00:00 2001 From: Peaceultime Date: Tue, 26 Nov 2024 15:22:57 +0100 Subject: [PATCH] Send registration email, add mail validation page, stabilize mail generation --- bun.lockb | Bin 407063 -> 436642 bytes db.sqlite | Bin 569344 -> 569344 bytes db.sqlite-shm | Bin 0 -> 32768 bytes db.sqlite-wal | Bin 0 -> 45352 bytes nuxt.config.ts | 14 +++++- package.json | 2 + pages/admin/index.vue | 3 -- pages/roadmap.vue | 2 +- pages/user/mailvalidated.vue | 18 ++++++++ pages/user/register.vue | 23 ++++------ server/api/auth/register.post.ts | 13 ++++++ server/components/mail/base.vue | 32 ++++++-------- server/components/mail/registration.vue | 16 ++++--- server/routes/user/mailvalidation.get.ts | 54 +++++++++++++++++++++++ server/tasks/mail.ts | 23 ++++++---- 15 files changed, 147 insertions(+), 53 deletions(-) create mode 100644 db.sqlite-shm create mode 100644 pages/user/mailvalidated.vue create mode 100644 server/routes/user/mailvalidation.get.ts diff --git a/bun.lockb b/bun.lockb index 68e29697cc7b9bee5f702e77b2100821abaa76db..017e16a5aa036daee5652226a25962251afd194b 100644 GIT binary patch delta 95090 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 B-ADic delta 79908 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⩔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 Jd7eG|0RW=zkoEuo delta 442 zcmZp8pw#d{X+vqeet`}%ODHFck%48hrIDqnuCYnZ+eVi6!|(lP~sJ zg%>+(=WC}p24t8zI%h|kcz9&_RXDn*WoTEJ!Y)%vQzHSjjn=@4S5T%Jc0j&ocrs6A&{4F$)m00x{e6mFL;R G9{>OxP>`hn diff --git a/db.sqlite-shm b/db.sqlite-shm new file mode 100644 index 0000000000000000000000000000000000000000..6be91d44d764f69582f335e7e7d9500edb737915 GIT binary patch literal 32768 zcmeI)v2DUo5CG6KBm_c}g2H|3^bCNq0V6N~bENeUl-VK@E6`D(NQj080R{QCz;YY8 zaq&(%-RbM!>FW*f^X*5JF;1C9yp{DU<$5vsS-x)$#j)63PqX=S|NVP8uRimC-cPHl zDEHnPaX+rhAa#!%HTuU{v(`fz0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+Kt~0#=tV!C(|?OEF^o~XR=+=X^s$~rfB*pk1PBmlCGga0+AskE1PBlyK!5-N k0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1iB>f2V5F2Qvd(} literal 0 HcmV?d00001 diff --git a/db.sqlite-wal b/db.sqlite-wal index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..fb0deebaa028eb454b3f1c6865ec0b7aa0ef010d 100644 GIT binary patch literal 45352 zcmeI(O^6$19LMolyX>-1jiA<|RFI7n+>B;kGlMQ}x=E9C3*sA?EbcU^Um$e@}-x5|Mh zo>DF=mF%@6iFDC z{-bFazN~wmBRj5X$*yhreprj}ZL5;2z8!97UoLRF`Oclm4<1O73mkCJ3?qO50tg_0 z00IagfB*srAaECf2y=m>{mcda+`IAkr+>Wi6S=@$4w)eY5I_I{1Q0*~0R#|0009IJ z5Qs1rcqHOnU?SYoKkpI5(!X96H`VWYxxh$FNHKBWR}y|C^(uHUL}RRe$KKi{8n8$sM@RvH)7suyoh zD|S4X4)54&W@2kvO{`BV@x|HAPPM(IxBN`4*jZUFpG-Zy8fbN)Za2?~LZ_oP>|h}~ z=NC8QXGCT}vD39iM^|cMWkaa*rQFhq>{+was2g*Bx_s)?^KNb`lPh!|9T}GLKR)y}r(OF=$AZ`JHpsg`YJmB4cf&DHZ$ z!5J+Zcc)TIZnLwd*Boo1n0>)qU-#DPXA8}sSXnrsc&pi}fBK{`l~K=!2e|J&f^X^% zUCb}P`y=-S2H4sxjQ|1&Ab`vUuNfhS)JZf$&f*&!Dg zx)!8h1Q0*~0R#|0009ILKmdUO3PhL-%=9xCFm^^yKejWoL@qGEW@2ds5I_I{1Q0*~ z0R#|00D++sh%gsO_cIr`di{-`Kgt~WoLpe&T9ASfKmY**5I_I{1Q0*~0R#pp5MeGb z*UwyFZ0Eff57#es$pr@3Oe~E60tg_000IagfB*srATV?S5#|ELe&zxzyBDwIj&FWJ zE--X0NWlmofB*srAb -
- -
@@ -52,7 +46,8 @@ const { add: addToast, clear: clearToasts } = useToast(); const confirmPassword = ref(""); const checkedLength = computed(() => state.password.length >= 8 && state.password.length <= 128); -const checkedLowerUpper = computed(() => state.password.toLowerCase() !== state.password && state.password.toUpperCase() !== state.password); +const checkedLower = computed(() => state.password.toUpperCase() !== state.password); +const checkedUpper = computed(() => state.password.toLowerCase() !== state.password); const checkedDigit = computed(() => /[0-9]/.test(state.password)); const checkedSymbol = computed(() => " !\"#$%&'()*+,-./:;<=>?@[]^_`{|}~".split("").some(e => state.password.includes(e))); diff --git a/server/api/auth/register.post.ts b/server/api/auth/register.post.ts index e029c21..4e9cf83 100644 --- a/server/api/auth/register.post.ts +++ b/server/api/auth/register.post.ts @@ -73,6 +73,19 @@ export default defineEventHandler(async (e): Promise => { logSession(e, await setUserSession(e, { user: { id: id.id, username: body.data.username, email: body.data.email, state: 0, signin: new Date(), permissions: [] } }) as UserSessionRequired); + runTask('mail', { + payload: { + type: 'mail', + to: [body.data.email], + template: 'registration', + data: { + username: body.data.username, + timestamp: Date.now(), + id: id.id, + } + } + }); + setResponseStatus(e, 201); return { success: true, session }; } diff --git a/server/components/mail/base.vue b/server/components/mail/base.vue index 31212ab..b7f1235 100644 --- a/server/components/mail/base.vue +++ b/server/components/mail/base.vue @@ -1,20 +1,16 @@ \ No newline at end of file diff --git a/server/components/mail/registration.vue b/server/components/mail/registration.vue index ce83b75..699ba81 100644 --- a/server/components/mail/registration.vue +++ b/server/components/mail/registration.vue @@ -1,22 +1,26 @@ \ No newline at end of file diff --git a/server/routes/user/mailvalidation.get.ts b/server/routes/user/mailvalidation.get.ts new file mode 100644 index 0000000..da6c030 --- /dev/null +++ b/server/routes/user/mailvalidation.get.ts @@ -0,0 +1,54 @@ +import { eq } from "drizzle-orm"; +import { z } from "zod"; +import useDatabase from "~/composables/useDatabase"; +import { usersTable } from "~/db/schema"; + +const schema = z.object({ + h: z.coerce.string(), + u: z.coerce.number(), + t: z.coerce.number(), +}); + +export default defineEventHandler(async (e) => { + const query = await getValidatedQuery(e, schema.safeParse); + + if(!query.success) + throw query.error; + + if(Bun.hash(query.data.u.toString(), query.data.t).toString() !== query.data.h) + { + return createError({ + statusCode: 400, + message: 'Lien incorrect', + }) + } + if(Date.now() > query.data.t + (60 * 60 * 1000)) + { + return createError({ + statusCode: 400, + message: 'Le lien a expiré', + }) + } + + const db = useDatabase(); + const result = db.select({ state: usersTable.state }).from(usersTable).where(eq(usersTable.id, query.data.u)).get(); + + if(result === undefined) + { + return createError({ + statusCode: 400, + message: 'Aucune donnée utilisateur trouvée', + }) + } + if(result?.state === 1) + { + return createError({ + statusCode: 400, + message: 'Votre compte a déjà été validé', + }) + } + + db.update(usersTable).set({ state: 1 }).where(eq(usersTable.id, query.data.u)).run(); + + sendRedirect(e, '/user/mailvalidated'); +}) \ No newline at end of file diff --git a/server/tasks/mail.ts b/server/tasks/mail.ts index 897a76e..a0926ba 100644 --- a/server/tasks/mail.ts +++ b/server/tasks/mail.ts @@ -1,6 +1,9 @@ import nodemailer from 'nodemailer'; import { createSSRApp, h } from 'vue'; import { renderToString } from 'vue/server-renderer'; +import postcss from 'postcss'; +import tailwindcss from 'tailwindcss'; +import { join } from 'node:path'; import base from '../components/mail/base.vue'; import registration from '../components/mail/registration.vue'; @@ -15,7 +18,7 @@ export const templates: Record = { }; import 'nitropack/types'; -import type Registration from '../components/mail/registration.vue'; +import type Mail from 'nodemailer/lib/mailer'; declare module 'nitropack/types' { interface TaskPayload @@ -65,22 +68,22 @@ export default defineTask({ throw new Error(`Modèle de mail ${payload.template} inconnu`); } - const mail = { + console.time('Generating HTML'); + const mail: Mail.Options = { from: 'd[any] - Ne pas répondre ', to: payload.to, html: await render(template.component, payload.data), subject: template.subject, - attachments: [{ - filename: 'logo.svg', - path: '../../public/logo.dark.svg', - cid: 'logo.obsidian.peaceultime.com', - }] + }; + console.timeEnd('Generating HTML'); if(mail.html === '') return { result: false, error: new Error("Invalid content") }; + console.time('Sending Mail'); const status = await transport.sendMail(mail); + console.timeEnd('Sending Mail'); if(status.rejected.length > 0) { @@ -100,9 +103,11 @@ async function render(component: any, data: Record): Promise h(component, data, []) }); + return h(base, null, { default: () => h(component, data, { default: () => null }) }); } }); - return await renderToString(app); + const html = await renderToString(app); + + return (`
${html}
`); } \ No newline at end of file