user can join
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import argon2 from 'argon2';
|
||||
import { z } from 'zod';
|
||||
|
||||
export default class Member {
|
||||
export default class Member {
|
||||
prefix = "MEMBER"
|
||||
indices = null
|
||||
|
||||
@@ -9,47 +9,34 @@ export default class Member {
|
||||
this.indices = indices
|
||||
}
|
||||
|
||||
addressSchema = z.object({
|
||||
address1: z.string(),
|
||||
address2: z.string().optional(),
|
||||
zip: z.string().regex(/^\d{5}(-\d{4})?$/),
|
||||
state: z.string(),
|
||||
city: z.string()
|
||||
})
|
||||
schema = z.object({
|
||||
id: z.number(),
|
||||
email: z.string().email(),
|
||||
firstName: z.string(),
|
||||
lastName: z.string(),
|
||||
password: z.string(),
|
||||
joined: z.string(),
|
||||
address: this.addressSchema.optional()
|
||||
created: z.string()
|
||||
})
|
||||
|
||||
isHashed = (s) => {return s.startsWith("$argon2")}
|
||||
|
||||
save(member) {
|
||||
let id = `${this.prefix}-${member.id}`
|
||||
let result = this.schema.safeParse(member)
|
||||
if(result.success) {
|
||||
try {
|
||||
global.db.addNode(id, member)
|
||||
} catch(e) {
|
||||
console.error(e)
|
||||
throw e
|
||||
}
|
||||
} else {
|
||||
console.error("Failed parsing member: ", result.error)
|
||||
throw new global.ServerError(400, "Invalid Member Data!: ");
|
||||
}
|
||||
}
|
||||
|
||||
async add(newMember) {
|
||||
async add(newMember, network = null) {
|
||||
const hash = await argon2.hash(newMember.password);
|
||||
newMember.password = hash
|
||||
newMember.joined = global.currentTime()
|
||||
newMember.id = this.indices[1] - 1
|
||||
this.save(newMember)
|
||||
|
||||
try {
|
||||
global.db.addNode(this.prefix, newMember)
|
||||
if(network) {
|
||||
global.db.edge.add({
|
||||
type: "IN",
|
||||
from: `${this.prefix}-${global.db.getNextIndex(this)}`,
|
||||
to: "NETWORK-1"
|
||||
})
|
||||
}
|
||||
} catch(e) {
|
||||
console.error(e)
|
||||
throw new global.ServerError(400, "Failed to add member!");
|
||||
}
|
||||
}
|
||||
|
||||
get(id) {
|
||||
|
||||
Reference in New Issue
Block a user