nextjs is stupid

This commit is contained in:
Lea 2024-01-24 00:55:17 +01:00
parent e99f9dc8af
commit 57a425a79a
Signed by: Lea
GPG key ID: 1BAFFE8347019C42
4 changed files with 31 additions and 29 deletions

View file

@ -1,7 +1,7 @@
import apiAuth from "@/lib/apiAuth";
import { auditLog } from "@/lib/audit";
import { AliasEntry, createAliasEntry } from "@/lib/db";
import { generateAliasEmail } from "@/lib/util";
import { generateAliasEmail } from "@/lib/util-server";
import { NextResponse } from "next/server";
/**

View file

@ -5,7 +5,8 @@ import fs from "fs/promises";
import { getServerSession } from "next-auth";
import { AuditLog, auditLog } from "./audit";
import { AliasEntry, AliasRequestEntry, ApiKeyEntry, approveAliasEntry, createAliasEntry, createApiKeyEntry, createTempAliasRequestEntry, createUserEntry, database, deleteAliasEntry, deleteApiKey, deleteTempAliasRequestEntry, getAlias, getAllAliases, getApiKeyById, getTempAliasRequestEntry, getUserAliases, getUserApiKeys, isAliasAvailable, setUserPassword } from "./db";
import { aliasesNeedApproval, anonymizeApiKey, generateAliasEmail, isAdmin } from "./util";
import { aliasesNeedApproval, anonymizeApiKey, isAdmin } from "./util";
import { generateAliasEmail } from "./util-server";
export async function fetchAllUsers(): Promise<string[]> {
return new Promise(async (resolve, reject) => {

27
src/lib/util-server.ts Normal file
View file

@ -0,0 +1,27 @@
import { TEMP_EMAIL_DOMAIN } from "./constants";
import { isAliasAvailable } from "./db";
import crypto from 'crypto';
import * as random_words from "random-words";
export async function generateAliasEmail(label: string, style: 'words' | 'random', labelAtEnd: boolean): Promise<string> {
let email: string;
do {
let randomString: string;
switch (style) {
case 'words':
randomString = random_words.generate(2).join('');
break;
case 'random':
randomString = crypto
.randomBytes(8)
.toString('base64')
.replace(/\W/, ''); // Delete special characters
break;
default:
throw new Error("Invalid style");
}
email = `${labelAtEnd ? `${randomString}-${label}` : `${label}-${randomString}`}@${TEMP_EMAIL_DOMAIN}`;
} while (!await isAliasAvailable(email, true));
return email;
}

View file

@ -1,8 +1,5 @@
import { Session } from 'next-auth';
import crypto from 'crypto';
import { ApiKeyEntry, isAliasAvailable } from './db';
import * as random_words from "random-words";
import { TEMP_EMAIL_DOMAIN } from './constants';
import { ApiKeyEntry } from './db';
export function sha256sum(input: any) {
const hash = crypto.createHash('sha256');
@ -25,26 +22,3 @@ export function anonymizeApiKey(key: ApiKeyEntry): ApiKeyEntry {
token: key.token.substring(0, 6) + "********",
};
}
export async function generateAliasEmail(label: string, style: 'words' | 'random', labelAtEnd: boolean): Promise<string> {
let email: string;
do {
let randomString: string;
switch (style) {
case 'words':
randomString = random_words.generate(2).join('');
break;
case 'random':
randomString = crypto
.randomBytes(8)
.toString('base64')
.replace(/\W/, ''); // Delete special characters
break;
default:
throw new Error("Invalid style");
}
email = `${labelAtEnd ? `${randomString}-${label}` : `${label}-${randomString}`}@${TEMP_EMAIL_DOMAIN}`;
} while (!await isAliasAvailable(email, true));
return email;
}