Remove response function

This commit is contained in:
aronmal 2023-04-10 22:08:52 +02:00
parent 2a009585f4
commit ac578e9247
Signed by: aronmal
GPG key ID: 816B7707426FC612
4 changed files with 48 additions and 95 deletions

View file

@ -1,14 +1,11 @@
import type { NextApiRequest, NextApiResponse } from "next" import type { NextApiRequest, NextApiResponse } from "next"
import type { Token } from "@prisma/client"
import sendError from "../../lib/backend/components/sendError" import sendError from "../../lib/backend/components/sendError"
import getTokenFromCookie from "../../lib/backend/components/getTokenFromCookie" import getTokenFromCookie from "../../lib/backend/components/getTokenFromCookie"
import checkTokenIsValid from "../../lib/backend/components/checkTokenIsValid" import checkTokenIsValid from "../../lib/backend/components/checkTokenIsValid"
import getTokenDB from "../../lib/backend/components/getTokenDB" import getTokenDB from "../../lib/backend/components/getTokenDB"
import getPlayerByIdDB from "../../lib/backend/components/getPlayerByIdDB" import getPlayerByIdDB from "../../lib/backend/components/getPlayerByIdDB"
import createTokenDB, { import createTokenDB from "../../lib/backend/components/createTokenDB"
RawToken, import sendResponse from "../../lib/backend/components/sendResponse"
} from "../../lib/backend/components/createTokenDB"
import sendResponse, { Result } from "../../lib/backend/components/sendResponse"
interface Data { interface Data {
token: string token: string
@ -26,23 +23,14 @@ export default async function auth(
getTokenDB(context, token, (tokenDB) => { getTokenDB(context, token, (tokenDB) => {
getPlayerByIdDB(context, tokenDB, (player) => { getPlayerByIdDB(context, tokenDB, (player) => {
createTokenDB(player, type, (newToken, newTokenDB) => { 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)) }).catch((err) => sendError(context, err))
} }
function authResponse(
newToken: RawToken,
newTokenDB: Token,
tokenDB: Token
): Result<Data> {
// Successfull response
return {
message: `Access-Token generated: ${newTokenDB.id} with Refreshtoken-Token: ${tokenDB.id}`,
body: { token: newToken.value },
type: ["debug", "infoCyan"],
}
}

View file

@ -1,10 +1,10 @@
import type { NextApiRequest, NextApiResponse } from "next" 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 getTokenFromBody from "../../lib/backend/components/getTokenFromBody"
import checkTokenIsValid from "../../lib/backend/components/checkTokenIsValid" import checkTokenIsValid from "../../lib/backend/components/checkTokenIsValid"
import getTokenDB from "../../lib/backend/components/getTokenDB" import getTokenDB from "../../lib/backend/components/getTokenDB"
import getPlayerByIdDB from "../../lib/backend/components/getPlayerByIdDB" 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" import sendError from "../../lib/backend/components/sendError"
interface Data { interface Data {
@ -21,19 +21,14 @@ export default async function data(
checkTokenIsValid(context, accessToken, (token) => { checkTokenIsValid(context, accessToken, (token) => {
getTokenDB(context, token, (tokenDB) => { getTokenDB(context, token, (tokenDB) => {
getPlayerByIdDB(context, tokenDB, (player) => { 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)) }).catch((err) => sendError(context, err))
} }
function dataResponse(player: Player, tokenDB: Token): Result<Data> {
const games: any = {}
// Successfull response
return {
message: `Requested data of user: ${player.id} with Access-Token: ${tokenDB.id}`,
body: { games },
type: ["debug", "infoCyan"],
}
}

View file

@ -1,18 +1,15 @@
import type { NextApiRequest, NextApiResponse } from "next" import type { NextApiRequest, NextApiResponse } from "next"
import type { Player, Token } from "@prisma/client"
import logging from "../../lib/backend/logging" import logging from "../../lib/backend/logging"
import getPlayerByNameDB from "../../lib/backend/components/getPlayerByNameDB" import getPlayerByNameDB from "../../lib/backend/components/getPlayerByNameDB"
import checkPasswordIsValid from "../../lib/backend/components/checkPasswordIsValid" import checkPasswordIsValid from "../../lib/backend/components/checkPasswordIsValid"
import createTokenDB, { import createTokenDB from "../../lib/backend/components/createTokenDB"
RawToken, import sendResponse from "../../lib/backend/components/sendResponse"
} from "../../lib/backend/components/createTokenDB"
import sendResponse, { Result } from "../../lib/backend/components/sendResponse"
import { setCookie } from "cookies-next" import { setCookie } from "cookies-next"
import prisma from "../../lib/prisma" import prisma from "../../lib/prisma"
import jwt from "jsonwebtoken" import jwt from "jsonwebtoken"
import errors from "../../lib/backend/errors"
import sendError, { API } from "../../lib/backend/components/sendError" import sendError, { API } from "../../lib/backend/components/sendError"
import getUserFromBody from "../../lib/backend/components/getUserFromBody" import getUserFromBody from "../../lib/backend/components/getUserFromBody"
import { rejectionErrors } from "../../lib/backend/errors"
interface Data { interface Data {
loggedIn: boolean loggedIn: boolean
@ -29,10 +26,26 @@ export default async function login(
getPlayerByNameDB(context, username, (player) => { getPlayerByNameDB(context, username, (player) => {
checkPasswordIsValid(context, player, password, () => { checkPasswordIsValid(context, player, password, () => {
createTokenDB(player, "REFRESH", (newToken, newTokenDB) => { createTokenDB(player, "REFRESH", (newToken, newTokenDB) => {
sendResponse( // Set login cookie
context, setCookie("token", newToken.value, {
loginResponse(context, player, newToken, newTokenDB) 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 const oldRefreshToken = req.cookies.token
try { try {
if (!oldRefreshToken) return sendError(context, errors.noCookie) if (!oldRefreshToken) return sendError(context, rejectionErrors.noCookie)
// Check for old cookie, if unused invalidate it // Check for old cookie, if unused invalidate it
const tokenData = jwt.verify( const tokenData = jwt.verify(
oldRefreshToken, oldRefreshToken,
@ -79,36 +92,3 @@ async function preCheck(context: API, next: () => void) {
return next() return next()
} }
function loginResponse(
context: API,
player: Player,
newToken: RawToken,
newTokenDB: Token
): Result<Data> {
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"],
}
}

View file

@ -1,7 +1,6 @@
import type { NextApiRequest, NextApiResponse } from "next" import type { NextApiRequest, NextApiResponse } from "next"
import type { Token } from "@prisma/client"
import checkTokenIsValid from "../../lib/backend/components/checkTokenIsValid" 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 sendError from "../../lib/backend/components/sendError"
import { deleteCookie } from "cookies-next" import { deleteCookie } from "cookies-next"
import getTokenDB from "../../lib/backend/components/getTokenDB" import getTokenDB from "../../lib/backend/components/getTokenDB"
@ -20,24 +19,15 @@ export default async function logout(
return getTokenFromCookie(context, (refreshToken) => { return getTokenFromCookie(context, (refreshToken) => {
checkTokenIsValid(context, refreshToken, (token) => { checkTokenIsValid(context, refreshToken, (token) => {
getTokenDB(context, token, (tokenDB) => { 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)) }).catch((err) => sendError(context, err))
} }
function logoutResponse<T>(
tokenDB: Token,
req: NextApiRequest,
res: NextApiResponse<T>
): Result<Data> {
// Set login cookie
deleteCookie("token", { req, res })
// Successfull response
return {
message: "User of Token " + tokenDB.id + " logged out.",
body: { loggedOut: true },
type: ["debug", "infoCyan"],
}
}