nextjs is stupid
This commit is contained in:
parent
e99f9dc8af
commit
57a425a79a
|
@ -1,7 +1,7 @@
|
||||||
import apiAuth from "@/lib/apiAuth";
|
import apiAuth from "@/lib/apiAuth";
|
||||||
import { auditLog } from "@/lib/audit";
|
import { auditLog } from "@/lib/audit";
|
||||||
import { AliasEntry, createAliasEntry } from "@/lib/db";
|
import { AliasEntry, createAliasEntry } from "@/lib/db";
|
||||||
import { generateAliasEmail } from "@/lib/util";
|
import { generateAliasEmail } from "@/lib/util-server";
|
||||||
import { NextResponse } from "next/server";
|
import { NextResponse } from "next/server";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -5,7 +5,8 @@ import fs from "fs/promises";
|
||||||
import { getServerSession } from "next-auth";
|
import { getServerSession } from "next-auth";
|
||||||
import { AuditLog, auditLog } from "./audit";
|
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 { 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[]> {
|
export async function fetchAllUsers(): Promise<string[]> {
|
||||||
return new Promise(async (resolve, reject) => {
|
return new Promise(async (resolve, reject) => {
|
||||||
|
|
27
src/lib/util-server.ts
Normal file
27
src/lib/util-server.ts
Normal 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;
|
||||||
|
}
|
|
@ -1,8 +1,5 @@
|
||||||
import { Session } from 'next-auth';
|
import { Session } from 'next-auth';
|
||||||
import crypto from 'crypto';
|
import { ApiKeyEntry } from './db';
|
||||||
import { ApiKeyEntry, isAliasAvailable } from './db';
|
|
||||||
import * as random_words from "random-words";
|
|
||||||
import { TEMP_EMAIL_DOMAIN } from './constants';
|
|
||||||
|
|
||||||
export function sha256sum(input: any) {
|
export function sha256sum(input: any) {
|
||||||
const hash = crypto.createHash('sha256');
|
const hash = crypto.createHash('sha256');
|
||||||
|
@ -25,26 +22,3 @@ export function anonymizeApiKey(key: ApiKeyEntry): ApiKeyEntry {
|
||||||
token: key.token.substring(0, 6) + "********",
|
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;
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in a new issue