42 lines
1.5 KiB
TypeScript
42 lines
1.5 KiB
TypeScript
import { NextApiRequest, NextApiResponse } from "next"
|
|
import { Logging } from "../../lib/backend/logging"
|
|
import { Token } from "@prisma/client"
|
|
import sendError from "../../lib/backend/components/sendError"
|
|
import getTokenFromCookie from "../../lib/backend/components/getTokenFromCookie"
|
|
import checkTokenIsValid from "../../lib/backend/components/checkTokenIsValid"
|
|
import getTokenDB from "../../lib/backend/components/getTokenDB"
|
|
import getPlayerByIdDB from "../../lib/backend/components/getPlayerByIdDB"
|
|
import createTokenDB from "../../lib/backend/components/createTokenDB"
|
|
import sendResponse from "../../lib/backend/components/sendResponse"
|
|
|
|
interface Data {
|
|
token: string
|
|
}
|
|
|
|
export default async function auth(
|
|
req: NextApiRequest,
|
|
res: NextApiResponse<Data>
|
|
) {
|
|
getTokenFromCookie(req, res, (token) => {
|
|
checkTokenIsValid(req, res, token, (tokenBody) => {
|
|
getTokenDB(req, res, tokenBody, token[1], (tokenDB) => {
|
|
getPlayerByIdDB(req, res, tokenDB, (player) => {
|
|
createTokenDB(player, "ACCESS", (newToken) => {
|
|
sendResponse(req, res, authResponse(newToken, tokenDB))
|
|
})
|
|
})
|
|
})
|
|
})
|
|
}).catch((err) => sendError(req, res, err))
|
|
}
|
|
|
|
function authResponse(newToken: [string, Token], tokenDB: Token) {
|
|
const [newTokenValue, newTokenDB] = newToken
|
|
|
|
// Successfull response
|
|
return {
|
|
message: `Access-Token generated: ${newTokenDB.id} with Refreshtoken-Token: ${tokenDB.id}`,
|
|
body: { token: newTokenValue },
|
|
type: ["debug", "info.cyan"] as Logging[],
|
|
}
|
|
}
|