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 { 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<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 { 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<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 { 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<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 { 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<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"],
}
}