Remove response function
This commit is contained in:
parent
2a009585f4
commit
ac578e9247
4 changed files with 48 additions and 95 deletions
|
@ -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"],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -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"],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -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"],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -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"],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue