diff --git a/leaky-ships/pages/api/auth.ts b/leaky-ships/pages/api/auth.ts index a197ada..519dc33 100644 --- a/leaky-ships/pages/api/auth.ts +++ b/leaky-ships/pages/api/auth.ts @@ -1,14 +1,11 @@ import type { NextApiRequest, NextApiResponse } from "next" -import type { 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, { - RawToken, -} from "../../lib/backend/components/createTokenDB" -import sendResponse, { Result } from "../../lib/backend/components/sendResponse" +import createTokenDB from "../../lib/backend/components/createTokenDB" +import sendResponse from "../../lib/backend/components/sendResponse" interface Data { token: string @@ -26,23 +23,14 @@ export default async function auth( getTokenDB(context, token, (tokenDB) => { getPlayerByIdDB(context, tokenDB, (player) => { createTokenDB(player, type, (newToken, newTokenDB) => { - sendResponse(context, authResponse(newToken, newTokenDB, tokenDB)) + 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)) } - -function authResponse( - newToken: RawToken, - newTokenDB: Token, - tokenDB: Token -): Result { - // Successfull response - return { - message: `Access-Token generated: ${newTokenDB.id} with Refreshtoken-Token: ${tokenDB.id}`, - body: { token: newToken.value }, - type: ["debug", "infoCyan"], - } -} diff --git a/leaky-ships/pages/api/data.ts b/leaky-ships/pages/api/data.ts index 20139b9..fef39f7 100644 --- a/leaky-ships/pages/api/data.ts +++ b/leaky-ships/pages/api/data.ts @@ -1,10 +1,10 @@ import type { NextApiRequest, NextApiResponse } from "next" -import type { Game, Player, Token } from "@prisma/client" +import type { Game } from "@prisma/client" import getTokenFromBody from "../../lib/backend/components/getTokenFromBody" import checkTokenIsValid from "../../lib/backend/components/checkTokenIsValid" import getTokenDB from "../../lib/backend/components/getTokenDB" import getPlayerByIdDB from "../../lib/backend/components/getPlayerByIdDB" -import sendResponse, { Result } from "../../lib/backend/components/sendResponse" +import sendResponse from "../../lib/backend/components/sendResponse" import sendError from "../../lib/backend/components/sendError" interface Data { @@ -21,19 +21,14 @@ export default async function data( checkTokenIsValid(context, accessToken, (token) => { getTokenDB(context, token, (tokenDB) => { getPlayerByIdDB(context, tokenDB, (player) => { - sendResponse(context, dataResponse(player, tokenDB)) + const games: any = {} + sendResponse(context, { + message: `Requested data of user: ${player.id} with Access-Token: ${tokenDB.id}`, + body: { games }, + type: ["debug", "infoCyan"], + }) }) }) }) }).catch((err) => sendError(context, err)) } - -function dataResponse(player: Player, tokenDB: Token): Result { - const games: any = {} - // Successfull response - return { - message: `Requested data of user: ${player.id} with Access-Token: ${tokenDB.id}`, - body: { games }, - type: ["debug", "infoCyan"], - } -} diff --git a/leaky-ships/pages/api/login.ts b/leaky-ships/pages/api/login.ts index 13e0866..5cbe9c0 100644 --- a/leaky-ships/pages/api/login.ts +++ b/leaky-ships/pages/api/login.ts @@ -1,18 +1,15 @@ import type { NextApiRequest, NextApiResponse } from "next" -import type { Player, Token } from "@prisma/client" import logging from "../../lib/backend/logging" import getPlayerByNameDB from "../../lib/backend/components/getPlayerByNameDB" import checkPasswordIsValid from "../../lib/backend/components/checkPasswordIsValid" -import createTokenDB, { - RawToken, -} from "../../lib/backend/components/createTokenDB" -import sendResponse, { Result } from "../../lib/backend/components/sendResponse" +import createTokenDB from "../../lib/backend/components/createTokenDB" +import sendResponse from "../../lib/backend/components/sendResponse" import { setCookie } from "cookies-next" import prisma from "../../lib/prisma" import jwt from "jsonwebtoken" -import errors from "../../lib/backend/errors" import sendError, { API } from "../../lib/backend/components/sendError" import getUserFromBody from "../../lib/backend/components/getUserFromBody" +import { rejectionErrors } from "../../lib/backend/errors" interface Data { loggedIn: boolean @@ -29,10 +26,26 @@ export default async function login( getPlayerByNameDB(context, username, (player) => { checkPasswordIsValid(context, player, password, () => { createTokenDB(player, "REFRESH", (newToken, newTokenDB) => { - sendResponse( - context, - loginResponse(context, player, newToken, newTokenDB) - ) + // Set login cookie + setCookie("token", newToken.value, { + req, + res, + maxAge: 172800, + httpOnly: true, + sameSite: true, + secure: true, + path: "/api", + }) + + sendResponse(context, { + message: + "User " + + player.id + + " logged in and generated Refresh-Token: " + + newTokenDB.id, + body: { loggedIn: true }, + type: ["debug", "infoCyan"], + }) }) }) }) @@ -45,7 +58,7 @@ async function preCheck(context: API, next: () => void) { const oldRefreshToken = req.cookies.token try { - if (!oldRefreshToken) return sendError(context, errors.noCookie) + if (!oldRefreshToken) return sendError(context, rejectionErrors.noCookie) // Check for old cookie, if unused invalidate it const tokenData = jwt.verify( oldRefreshToken, @@ -79,36 +92,3 @@ async function preCheck(context: API, next: () => void) { return next() } - -function loginResponse( - context: API, - player: Player, - newToken: RawToken, - newTokenDB: Token -): Result { - const { req, res } = context - // const { player, req, res } = payload - const { value } = newToken - - // Set login cookie - setCookie("token", value, { - req, - res, - maxAge: 172800, - httpOnly: true, - sameSite: true, - secure: true, - path: "/api", - }) - - // Successfull response - return { - message: - "User " + - player.id + - " logged in and generated Refresh-Token: " + - newTokenDB.id, - body: { loggedIn: true }, - type: ["debug", "infoCyan"], - } -} diff --git a/leaky-ships/pages/api/logout.ts b/leaky-ships/pages/api/logout.ts index 5d5e9dc..61996e0 100644 --- a/leaky-ships/pages/api/logout.ts +++ b/leaky-ships/pages/api/logout.ts @@ -1,7 +1,6 @@ import type { NextApiRequest, NextApiResponse } from "next" -import type { Token } from "@prisma/client" import checkTokenIsValid from "../../lib/backend/components/checkTokenIsValid" -import sendResponse, { Result } from "../../lib/backend/components/sendResponse" +import sendResponse from "../../lib/backend/components/sendResponse" import sendError from "../../lib/backend/components/sendError" import { deleteCookie } from "cookies-next" import getTokenDB from "../../lib/backend/components/getTokenDB" @@ -20,24 +19,15 @@ export default async function logout( return getTokenFromCookie(context, (refreshToken) => { checkTokenIsValid(context, refreshToken, (token) => { getTokenDB(context, token, (tokenDB) => { - sendResponse(context, logoutResponse(tokenDB, req, res)) + // Set login cookie + deleteCookie("token", { req, res }) + + sendResponse(context, { + message: "User of Token " + tokenDB.id + " logged out.", + body: { loggedOut: true }, + type: ["debug", "infoCyan"], + }) }) }) }).catch((err) => sendError(context, err)) } - -function logoutResponse( - tokenDB: Token, - req: NextApiRequest, - res: NextApiResponse -): Result { - // Set login cookie - deleteCookie("token", { req, res }) - - // Successfull response - return { - message: "User of Token " + tokenDB.id + " logged out.", - body: { loggedOut: true }, - type: ["debug", "infoCyan"], - } -}