Started introducing prisma to connect to MongoDB
This commit is contained in:
parent
8397320a6b
commit
530a58f703
11 changed files with 1734 additions and 42 deletions
19
leaky-ships/lib/backend/jwtVerifyCatch.ts
Normal file
19
leaky-ships/lib/backend/jwtVerifyCatch.ts
Normal file
|
@ -0,0 +1,19 @@
|
|||
export default async function jwtVerifyCatch(
|
||||
tokenType: 'refreshToken' | 'accessToken',
|
||||
err: Error
|
||||
) {
|
||||
switch (err.message) {
|
||||
case 'jwt expired':
|
||||
return { message: `JWT (${tokenType}) expired!`, statusCode: 403, solved: true, type: 'warn' }
|
||||
|
||||
case 'invalid signature':
|
||||
return { message: `Invalid JWT (${tokenType}) signature! Token: `, statusCode: 401, solved: true, type: 'error' }
|
||||
|
||||
case 'jwt must be provided':
|
||||
return { message: `No JWT (${tokenType}) given.`, statusCode: 401, solved: true, type: 'warn' }
|
||||
|
||||
default:
|
||||
console.log(err)
|
||||
return { message: `Unknown error on 'JWT.verify()'.`, solved: false }
|
||||
}
|
||||
}
|
76
leaky-ships/lib/backend/logging.ts
Normal file
76
leaky-ships/lib/backend/logging.ts
Normal file
|
@ -0,0 +1,76 @@
|
|||
import fs from 'fs'
|
||||
import colors, { Color } from 'colors'
|
||||
import { NextApiRequest } from 'next'
|
||||
import { IncomingMessage } from 'http'
|
||||
colors.enable()
|
||||
|
||||
export type LoggingTypes = 'system' | 'info.green' | 'info.cyan' | 'debug' | 'post' | 'warn' | 'error' | [string, keyof Color]
|
||||
|
||||
let started: boolean = false
|
||||
|
||||
export async function logStartup() {
|
||||
await fs.promises.stat('log').catch(async () => {
|
||||
await fs.promises.mkdir('log')
|
||||
await logging(`Created 'log' Folder.`, ['info.cyan', 'system'])
|
||||
})
|
||||
started = true
|
||||
}
|
||||
|
||||
export async function logging(message: string, types: LoggingTypes[], req?: NextApiRequest | IncomingMessage) {
|
||||
if (!started)
|
||||
await logStartup()
|
||||
let messages = { console: message, file: message }
|
||||
types.slice().reverse().forEach(async (type) => {
|
||||
switch (type) {
|
||||
case 'system':
|
||||
messages.console = '[SYSTEM] '.green + messages.console
|
||||
messages.file = '[SYSTEM] ' + messages.file
|
||||
break
|
||||
|
||||
case 'info.green':
|
||||
messages.console = '[INFO] '.green + messages.console
|
||||
messages.file = '[INFO] ' + messages.file
|
||||
break
|
||||
|
||||
case 'info.cyan':
|
||||
messages.console = '[INFO] '.cyan + messages.console
|
||||
messages.file = '[INFO] ' + messages.file
|
||||
break
|
||||
|
||||
case 'debug':
|
||||
messages.console = '[Debug] '.grey + messages.console
|
||||
messages.file = '[Debug] ' + messages.file
|
||||
break
|
||||
|
||||
case 'post':
|
||||
messages.console = '[POST] ' + messages.console
|
||||
messages.file = '[POST] ' + messages.file
|
||||
break
|
||||
|
||||
case 'warn':
|
||||
messages.console = '[WARN] '.yellow + messages.console
|
||||
messages.file = '[WARN] ' + messages.file
|
||||
break
|
||||
|
||||
case 'error':
|
||||
messages.console = '[ERROR] '.red + messages.console
|
||||
messages.file = '[ERROR] ' + messages.file
|
||||
break
|
||||
|
||||
default:
|
||||
messages.console = `[${type[0]}] `[type[1]] + messages.console
|
||||
messages.file = `[${type[0]}] ` + messages.file
|
||||
break
|
||||
}
|
||||
})
|
||||
messages.console = `[${new Date().toString().slice(0, 33)}] ` + messages.console
|
||||
messages.file = `[${new Date().toString().slice(0, 33)}] ` + messages.file
|
||||
if (req) {
|
||||
const forwardedFor: any = req.headers['x-forwarded-for']
|
||||
const ip = (forwardedFor || '127.0.0.1, 192.168.178.1').split(',')
|
||||
messages.console = ip[0].yellow + ' - ' + messages.console
|
||||
messages.file = ip[0] + ' - ' + messages.file
|
||||
}
|
||||
await fs.promises.appendFile('log/log.txt', messages.file + '\n')
|
||||
console.log(messages.console)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue