diff options
author | Puyodead1 <puyodead@proton.me> | 2023-01-21 14:45:13 -0500 |
---|---|---|
committer | Puyodead1 <puyodead@protonmail.com> | 2023-02-23 22:40:05 -0500 |
commit | 97bafa81fc252c762aac265dc96eb90ec279cf96 (patch) | |
tree | 0195a31b08462d8aff7281783c126e6007cd7470 | |
parent | Update package-lock.json (diff) | |
download | server-97bafa81fc252c762aac265dc96eb90ec279cf96.tar.xz |
fix linting errors
-rw-r--r-- | src/api/routes/auth/verify/index.ts | 15 | ||||
-rw-r--r-- | src/util/entities/User.ts | 9 | ||||
-rw-r--r-- | src/util/util/Email.ts | 12 | ||||
-rw-r--r-- | src/util/util/Token.ts | 47 |
4 files changed, 19 insertions, 64 deletions
diff --git a/src/api/routes/auth/verify/index.ts b/src/api/routes/auth/verify/index.ts index d61b8d16..7809bc26 100644 --- a/src/api/routes/auth/verify/index.ts +++ b/src/api/routes/auth/verify/index.ts @@ -17,11 +17,7 @@ */ import { route, verifyCaptcha } from "@fosscord/api"; -import { - Config, - FieldErrors, - verifyTokenEmailVerification, -} from "@fosscord/util"; +import { checkToken, Config, FieldErrors } from "@fosscord/util"; import { Request, Response, Router } from "express"; import { HTTPError } from "lambert-server"; const router = Router(); @@ -47,10 +43,7 @@ router.post( try { const { jwtSecret } = Config.get().security; - const { decoded, user } = await verifyTokenEmailVerification( - token, - jwtSecret, - ); + const { decoded, user } = await checkToken(token, jwtSecret); // toksn should last for 24 hours from the time they were issued if (new Date().getTime() > decoded.iat * 1000 + 86400 * 1000) { @@ -71,8 +64,8 @@ router.post( // TODO: invalidate token after use? return res.send(user); - } catch (error: any) { - throw new HTTPError(error?.toString(), 400); + } catch (error) { + throw new HTTPError((error as Error).toString(), 400); } }, ); diff --git a/src/util/entities/User.ts b/src/util/entities/User.ts index 4a399ed9..42f74fb4 100644 --- a/src/util/entities/User.ts +++ b/src/util/entities/User.ts @@ -31,7 +31,14 @@ import { ConnectedAccount } from "./ConnectedAccount"; import { Member } from "./Member"; import { UserSettings } from "./UserSettings"; import { Session } from "./Session"; -import { Config, FieldErrors, Snowflake, trimSpecial, adjustEmail, Email, generateToken } from ".."; +import { + Config, + FieldErrors, + Snowflake, + trimSpecial, + adjustEmail, + Email, +} from ".."; import { Request } from "express"; import { SecurityKey } from "./SecurityKey"; diff --git a/src/util/util/Email.ts b/src/util/util/Email.ts index 8899b3c2..cbcc5b60 100644 --- a/src/util/util/Email.ts +++ b/src/util/util/Email.ts @@ -18,7 +18,7 @@ import fs from "node:fs"; import path from "node:path"; -import nodemailer, { Transporter } from "nodemailer"; +import nodemailer, { SentMessageInfo, Transporter } from "nodemailer"; import { User } from "../entities"; import { Config } from "./Config"; import { generateToken } from "./Token"; @@ -158,7 +158,10 @@ export const Email: { transporter: Transporter | null; init: () => Promise<void>; generateVerificationLink: (id: string, email: string) => Promise<string>; - sendVerificationEmail: (user: User, email: string) => Promise<any>; + sendVerificationEmail: ( + user: User, + email: string, + ) => Promise<SentMessageInfo>; doReplacements: ( template: string, user: User, @@ -254,10 +257,7 @@ export const Email: { const link = `${instanceUrl}/verify#token=${token}`; return link; }, - sendVerificationEmail: async function ( - user: User, - email: string, - ): Promise<any> { + sendVerificationEmail: async function (user: User, email: string) { if (!this.transporter) return; // generate a verification link for the user diff --git a/src/util/util/Token.ts b/src/util/util/Token.ts index e4b1fe41..12e4a79a 100644 --- a/src/util/util/Token.ts +++ b/src/util/util/Token.ts @@ -72,58 +72,13 @@ export function checkToken( }); } -/** - * Puyodead1 (1/19/2023): I made a copy of this function because I didn't want to break anything with the other one. - * this version of the function doesn't use select, so we can update the user. with select causes constraint errors. - */ -export function verifyTokenEmailVerification( - token: string, - jwtSecret: string, -): Promise<{ decoded: any; user: User }> { - return new Promise((res, rej) => { - jwt.verify(token, jwtSecret, JWTOptions, async (err, decoded: any) => { - if (err || !decoded) return rej("Invalid Token"); - - const user = await User.findOne({ - where: { id: decoded.id }, - }); - if (!user) return rej("Invalid Token"); - if (user.disabled) return rej("User disabled"); - if (user.deleted) return rej("User not found"); - - return res({ decoded, user }); - }); - }); -} - -export function verifyToken( - token: string, - jwtSecret: string, -): Promise<{ decoded: any; user: User }> { - return new Promise((res, rej) => { - jwt.verify(token, jwtSecret, JWTOptions, async (err, decoded: any) => { - if (err || !decoded) return rej("Invalid Token"); - - const user = await User.findOne({ - where: { id: decoded.id }, - select: ["data", "bot", "disabled", "deleted", "rights"], - }); - if (!user) return rej("Invalid Token"); - if (user.disabled) return rej("User disabled"); - if (user.deleted) return rej("User not found"); - - return res({ decoded, user }); - }); - }); -} - export async function generateToken(id: string, email?: string) { const iat = Math.floor(Date.now() / 1000); const algorithm = "HS256"; return new Promise((res, rej) => { jwt.sign( - { id: id, email: email, iat }, + { id, iat, email }, Config.get().security.jwtSecret, { algorithm, |