62 lines
1.4 KiB
JavaScript
62 lines
1.4 KiB
JavaScript
import OrderedObject from "./OrderedObject.js"
|
|
|
|
export default class Tokens extends OrderedObject {
|
|
|
|
add(token) {
|
|
let id = `TOKEN-${token.uuid}`
|
|
if(this.validate(id, token)) {
|
|
try {
|
|
super.add(id, token)
|
|
} catch(e) {
|
|
console.error(e)
|
|
throw e
|
|
}
|
|
} else {
|
|
throw new global.ServerError(400, "Invalid Member Data!");
|
|
}
|
|
}
|
|
|
|
get(uuid) {
|
|
return super.get(`TOKEN-${uuid}`)
|
|
}
|
|
|
|
validate(id, node) {
|
|
let idTraits = {
|
|
firstWord: "TOKEN"
|
|
}
|
|
|
|
let fields = [
|
|
"index",
|
|
"url",
|
|
"used"
|
|
]
|
|
|
|
let checkID = () => {
|
|
let split = id.split("-")
|
|
return (
|
|
split[0] === idTraits.firstWord
|
|
)
|
|
}
|
|
let idres = checkID()
|
|
if(!idres) {
|
|
return false
|
|
}
|
|
|
|
let checkFields = () => {
|
|
for(let i = 0; i < fields.length; i++) {
|
|
if(!node[fields[i]]) {
|
|
throw new Error(`Token ${node.email} is missing trait ${fields[i]}`)
|
|
return false
|
|
} else {
|
|
return true
|
|
}
|
|
}
|
|
}
|
|
let fieldres = checkFields()
|
|
if(!fieldres) {
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|
|
} |