aboutsummaryrefslogtreecommitdiffstats
path: root/routes/users.js
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2023-12-06 13:54:01 -0800
committerAdam Soltys <[email protected]>2023-12-06 13:54:01 -0800
commit00b8317b7040d235fef127eeec3abeb24bfa1af3 (patch)
tree9fea9511c3fb49cb7ea39efb87527c700929feec /routes/users.js
parentdb37eb1610db48b1773fb685e198466b6d54fcb5 (diff)
downloadcoinos-server-00b8317b7040d235fef127eeec3abeb24bfa1af3.tar.gz
coinos-server-00b8317b7040d235fef127eeec3abeb24bfa1af3.zip
email verification
Diffstat (limited to 'routes/users.js')
-rw-r--r--routes/users.js45
1 files changed, 42 insertions, 3 deletions
diff --git a/routes/users.js b/routes/users.js
index d3dff28b..f666d75b 100644
--- a/routes/users.js
+++ b/routes/users.js
@@ -23,6 +23,7 @@ import { v4 } from "uuid";
import { parseISO } from "date-fns";
import { types } from "$lib/payments";
import { bech32 } from "bech32";
+import { mail, templates } from "$lib/mail";
import got from "got";
import upload from "$lib/upload";
@@ -433,8 +434,46 @@ export default {
else bail(res, "unauthorized");
},
- async verify({ body: { test } }, res) {
- console.log("test", test);
- res.send(test);
+ async request({ body: { id, email }}, res) {
+ try {
+ let code = v4();
+ let user = await g(`user:${id}`);
+ if (!user) fail("user not found");
+ let { username } = user;
+
+ if (email !== user.email) {
+ user.verified = false;
+ await s(`user:${id}`, user);
+ user.email = email;
+ }
+
+
+ await s(`verify:${code}`, id);
+ let link = `${process.env.URL}/${username}/verify/${code}`;
+ let subject = "Email Verification";
+
+ await mail(user, subject, templates.verifyEmail, {
+ username,
+ link
+ });
+
+ res.send({ ok: true });
+ } catch (e) {
+ bail(res, e.message);
+ }
+ },
+
+ async verify({ params: { code } }, res) {
+ try {
+ let id = await g(`verify:${code}`);
+ if (!id) fail(res, "verification failed");
+ let user = await g(`user:${id}`);
+ user.verified = true;
+ await s(`user:${id}`, user);
+
+ res.send(pick(user, whitelist));
+ } catch (e) {
+ bail(res, e.message);
+ }
}
};