space-smasher-9001/server/Auth.js
2021-10-18 02:41:25 +02:00

73 lines
1.4 KiB
JavaScript

import { randomBytes } from 'crypto'
import jwt from 'jsonwebtoken'
import db from './Database.js'
export default {
async createAccount(name) {
if (typeof name !== "string")
return {
error: "Incorrect name"
}
const re = /^[a-zA-z0-9_$][a-zA-z0-9 _$]{,15}$/
if (!re.test(name))
return {
error: "Incorrect name"
}
console.log("Creating user");
if (db.userExists(name)) {
console.log("User exists");
return {
error: "The name alredy occupied"
}
}
const password = randomBytes(16).toString('hex')
const token = jwt.sign({
name: name,
record: 0,
}, process.env.secret)
await db.addUser({
name,
password: password,
record: 0,
lastPlayed: 0,
})
return {
name,
password: password,
record: 0,
token
}
},
login(password) {
console.log("Logging user");
if (typeof password !== "string")
return {
error: "User does not exists"
}
const user = db.getUserByPassword(password)
if (!user) {
return {
error: "User does not exists"
}
}
const token = jwt.sign({
name: user.name,
record: user.record,
}, process.env.secret)
const { lastPlayed, ...strippedUser } = user;
return {
...strippedUser,
token
}
}
}