50 lines
1.7 KiB
TypeScript
50 lines
1.7 KiB
TypeScript
import checkTokenIsValid from "@backend/components/checkTokenIsValid"
|
|
import getPlayerByIdDB from "@backend/components/getPlayerByIdDB"
|
|
import getTokenDB from "@backend/components/getTokenDB"
|
|
import getTokenFromCookie from "@backend/components/getTokenFromCookie"
|
|
import getUserFromBody from "@backend/components/getUserFromBody"
|
|
import sendError from "@backend/components/sendError"
|
|
import sendResponse from "@backend/components/sendResponse"
|
|
import updatePlayerDB from "@backend/components/updatePlayerDB"
|
|
import bcrypt from "bcrypt"
|
|
import type { NextApiRequest, NextApiResponse } from "next"
|
|
|
|
interface Data {
|
|
registered: boolean
|
|
}
|
|
|
|
export default async function register(
|
|
req: NextApiRequest,
|
|
res: NextApiResponse<Data>
|
|
) {
|
|
const context = { req, res }
|
|
|
|
return getTokenFromCookie(context, (refreshToken) => {
|
|
checkTokenIsValid(context, refreshToken, (token) => {
|
|
getTokenDB(context, token, (tokenDB) => {
|
|
getUserFromBody(context, (username, password) =>
|
|
getPlayerByIdDB(context, tokenDB, async (player) =>
|
|
updatePlayerDB(
|
|
context,
|
|
player,
|
|
{
|
|
username,
|
|
email: "arst",
|
|
passwordHash: await bcrypt.hash(password, 10),
|
|
anonymous: false,
|
|
},
|
|
(player) => {
|
|
sendResponse(context, {
|
|
message: "Player registered : " + player.id,
|
|
statusCode: 201,
|
|
body: { registered: true },
|
|
type: ["debug", "infoCyan"],
|
|
})
|
|
}
|
|
)
|
|
)
|
|
)
|
|
})
|
|
})
|
|
}).catch((err) => sendError(context, err))
|
|
}
|