adding join endpoint

This commit is contained in:
metacryst
2026-01-13 08:59:45 -06:00
parent 942e479185
commit f2b5ba89eb
5 changed files with 9 additions and 18 deletions

View File

@@ -93,7 +93,6 @@ export default class Database {
} }
setInterval(() => { setInterval(() => {
console.log("saving db")
global.db.saveData() global.db.saveData()
}, 5000) }, 5000)
} }

View File

@@ -22,12 +22,8 @@ export default class Member {
firstName: z.string(), firstName: z.string(),
lastName: z.string(), lastName: z.string(),
password: z.string(), password: z.string(),
tokenUsed: z.string().regex(
/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,
"Invalid UUID"
),
joined: z.string(), joined: z.string(),
address: this.addressSchema address: this.addressSchema.optional()
}) })
isHashed = (s) => {return s.startsWith("$argon2")} isHashed = (s) => {return s.startsWith("$argon2")}
@@ -37,7 +33,7 @@ export default class Member {
let result = this.schema.safeParse(member) let result = this.schema.safeParse(member)
if(result.success) { if(result.success) {
try { try {
super.add(id, member) global.db.addNode(id, member)
} catch(e) { } catch(e) {
console.error(e) console.error(e)
throw e throw e
@@ -48,12 +44,11 @@ export default class Member {
} }
} }
async add(newMember, tokenID) { async add(newMember) {
newMember.tokenUsed = tokenID
const hash = await argon2.hash(newMember.password); const hash = await argon2.hash(newMember.password);
newMember.password = hash newMember.password = hash
newMember.joined = global.currentTime() newMember.joined = global.currentTime()
newMember.id = this.entries.length+1 newMember.id = this.indices[1] - 1
this.save(newMember) this.save(newMember)
} }

View File

@@ -35,7 +35,7 @@ class Server {
router.get('/signout', this.auth.logout) router.get('/signout', this.auth.logout)
/* Site */ /* Site */
router.post('/signup', this.verifySignupToken, this.newUserSubmission) router.post('/free', this.newUserSubmission)
router.get('/db/images/*', this.getUserImage) router.get('/db/images/*', this.getUserImage)
router.get('/app/comaldata', this.getComalData) router.get('/app/comaldata', this.getComalData)
router.get('/*', this.get) router.get('/*', this.get)
@@ -79,12 +79,8 @@ class Server {
} }
newUserSubmission = async (req, res) => { newUserSubmission = async (req, res) => {
const { token } = req.query;
try { try {
let tokenData = db.tokens.get(token) await db.members.add(req.body)
if(tokenData.used) throw new global.ServerError(400, "Token alredy used!")
await db.members.add(req.body, tokenData.uuid)
db.tokens.markUsed(token)
global.db.saveData() global.db.saveData()
return res.status(200).json({}); return res.status(200).json({});
} catch(e) { } catch(e) {

View File

@@ -46,7 +46,8 @@
} }
:root.public { :root.public {
--accent: var(--gold); --main: black;
--accent: var(--parchment);
} }
@font-face { @font-face {

View File

@@ -1,6 +1,6 @@
class SignupForm extends Shadow { class SignupForm extends Shadow {
errorMessage = "Error signing up. Please try again later or email info@hyperia.so if the problem persists." errorMessage = "Error signing up. Please try again later or email samuel@sun.museum if the problem persists."
successMessage = "Success! You may now log in." successMessage = "Success! You may now log in."
inputStyles(el) { inputStyles(el) {