leaky-ships/leaky-ships/pages/api/user/auth.ts

36 lines
1.3 KiB
TypeScript

import checkTokenIsValid from "@backend/components/checkTokenIsValid"
import createTokenDB from "@backend/components/createTokenDB"
import getPlayerByIdDB from "@backend/components/getPlayerByIdDB"
import getTokenDB from "@backend/components/getTokenDB"
import getTokenFromCookie from "@backend/components/getTokenFromCookie"
import sendError from "@backend/components/sendError"
import sendResponse from "@backend/components/sendResponse"
import type { NextApiRequest, NextApiResponse } from "next"
interface Data {
token: string
}
export default async function auth(
req: NextApiRequest,
res: NextApiResponse<Data>
) {
const context = { req, res }
const type = "ACCESS"
getTokenFromCookie(context, (refreshToken) => {
checkTokenIsValid(context, refreshToken, (token) => {
getTokenDB(context, token, (tokenDB) => {
getPlayerByIdDB(context, tokenDB, (player) => {
createTokenDB(player, type, (newToken, newTokenDB) => {
sendResponse(context, {
message: `Access-Token generated: ${newTokenDB.id} with Refreshtoken-Token: ${tokenDB.id}`,
body: { token: newToken.value },
type: ["debug", "infoCyan"],
})
})
})
})
})
}).catch((err) => sendError(context, err))
}