diff --git a/src/actions/signup.ts b/src/actions/signup.ts index 8942622..ff4d44d 100644 --- a/src/actions/signup.ts +++ b/src/actions/signup.ts @@ -29,12 +29,12 @@ export const signup = { phone: z.string().trim().nullable(), username: z.string().trim(), edition: z.enum(['java', 'bedrock']), - hash: z.string().nullish() + code: z.string().nullish() }), handler: async (input, context) => { - // check if hash given and if so, if it's valid and nobody has already used it - if (input.hash) { - const directSignup = await db.getDirectSignupByHash({ hash: input.hash }); + // check if code given and if so, if it's valid and nobody has already used it + if (input.code) { + const directSignup = await db.getDirectSignupByCode({ code: input.code }); if (!directSignup) { throw new ActionError({ @@ -84,8 +84,8 @@ export const signup = { uuid: uuid }); - if (input.hash) { - await tx.setDirectSignupUser({ hash: input.hash, userId: user.id }); + if (input.code) { + await tx.setDirectSignupUser({ code: input.code, userId: user.id }); } }); diff --git a/src/actions/user.ts b/src/actions/user.ts index 2d374ec..e4260d8 100644 --- a/src/actions/user.ts +++ b/src/actions/user.ts @@ -154,12 +154,12 @@ export const user = { }), deleteDirectInvitation: defineAction({ input: z.object({ - hash: z.string() + code: z.string() }), handler: async (input, context) => { Session.actionSessionFromCookies(context.cookies, Permissions.Users); - await db.deleteDirectSignup({ hash: input.hash }); + await db.deleteDirectSignup({ code: input.code }); } }), directInvitations: defineAction({ diff --git a/src/app/admin/directInvitations/directInvitations.ts b/src/app/admin/directInvitations/directInvitations.ts index 3e69edf..d0f358f 100644 --- a/src/app/admin/directInvitations/directInvitations.ts +++ b/src/app/admin/directInvitations/directInvitations.ts @@ -41,5 +41,5 @@ export async function deleteDirectInvitation(directInvitation: DirectInvitation) return; } - deleteFromWritableArray(directInvitations, (i) => i.hash === directInvitation.hash); + deleteFromWritableArray(directInvitations, (i) => i.code === directInvitation.code); } diff --git a/src/app/website/signup/JavaSignup.svelte b/src/app/website/signup/JavaSignup.svelte index d2e47f6..1486df6 100644 --- a/src/app/website/signup/JavaSignup.svelte +++ b/src/app/website/signup/JavaSignup.svelte @@ -10,7 +10,7 @@ import { onMount } from 'svelte'; interface Props { - signupHash?: string; + signupCode?: string; serverIp: string; discordLink: string; paypalLink: string; @@ -19,7 +19,7 @@ onFinished: () => void; } - let { signupHash, serverIp, discordLink, paypalLink, teamspeakLink, startDate, onFinished }: Props = $props(); + let { signupCode, serverIp, discordLink, paypalLink, teamspeakLink, startDate, onFinished }: Props = $props(); let rulesAccepted = $state(false); let rulesOpen = $state(false); @@ -73,7 +73,7 @@ phone: form.phone.value, username: form.username.value, edition: 'java', - hash: signupHash + code: signupCode }); submitting = false; @@ -256,7 +256,7 @@ {paypalLink} {teamspeakLink} {startDate} - newRegistrationAllowed={!signupHash} + newRegistrationAllowed={!signupCode} onClose={() => { registration = null; onFinished(); diff --git a/src/app/website/signup/Signup.astro b/src/app/website/signup/Signup.astro index 3d22c45..16e4054 100644 --- a/src/app/website/signup/Signup.astro +++ b/src/app/website/signup/Signup.astro @@ -8,10 +8,10 @@ interface Props { message: string; subMessage?: string; }; - signupHash?: string; + signupCode?: string; } -const { signupDisabled, signupHash } = Astro.props; +const { signupDisabled, signupCode } = Astro.props; --- @@ -22,7 +22,7 @@ const { signupDisabled, signupHash } = Astro.props;
setDirectSignupUser(this.db, values); deleteDirectSignup = (values: DeleteDirectSignupReq) => deleteDirectSignup(this.db, values); getDirectSignups = (values: GetDirectSignupsReq) => getDirectSignups(this.db, values); - getDirectSignupByHash = (values: GetDirectSignupByHashReq) => getDirectSignupByHash(this.db, values); + getDirectSignupByCode = (values: GetDirectSignupByCodeReq) => getDirectSignupByCode(this.db, values); /* report */ addReport = (values: AddReportReq) => addReport(this.db, values); diff --git a/src/db/schema/directSignup.ts b/src/db/schema/directSignup.ts index 5833521..783fa6b 100644 --- a/src/db/schema/directSignup.ts +++ b/src/db/schema/directSignup.ts @@ -8,35 +8,35 @@ import { BASE_HOST, BASE_PATH } from 'astro:env/server'; type Database = MySql2Database<{ directSignup: typeof directSignup }>; export const directSignup = mysqlTable('direct_signup', { - hash: varchar('hash', { length: 255 }).unique().notNull(), + code: varchar('code', { length: 255 }).unique().notNull(), userId: int('user_id').references(() => user.id) }); export type AddDirectSignupReq = {}; export type SetDirectSignupUserReq = { - hash: string; + code: string; userId: number; }; export type DeleteDirectSignupReq = { - hash: string; + code: string; }; export type GetDirectSignupsReq = {}; -export type GetDirectSignupByHashReq = { - hash: string; +export type GetDirectSignupByCodeReq = { + code: string; }; export async function addDirectSignup(db: Database, _values: AddDirectSignupReq) { - const hash = generateRandomString(16); + const code = generateRandomString(16); await db.insert(directSignup).values({ - hash: hash + code: code }); - return { hash: hash, url: `${BASE_HOST}/${BASE_PATH}/signup/${hash}` }; + return { code: code, url: `${BASE_HOST}/${BASE_PATH}/signup/${code}` }; } export async function setDirectSignupUser(db: Database, values: SetDirectSignupUserReq) { @@ -45,34 +45,34 @@ export async function setDirectSignupUser(db: Database, values: SetDirectSignupU .set({ userId: values.userId }) - .where(eq(directSignup.hash, values.hash)); + .where(eq(directSignup.code, values.code)); } export async function deleteDirectSignup(db: Database, values: DeleteDirectSignupReq) { - return db.delete(directSignup).where(eq(directSignup.hash, values.hash)); + return db.delete(directSignup).where(eq(directSignup.code, values.code)); } export async function getDirectSignups(db: Database, _values: GetDirectSignupsReq) { const directSignups = await db .select({ - hash: directSignup.hash, + code: directSignup.code, user: user }) .from(directSignup) .leftJoin(user, eq(directSignup.userId, user.id)); - return directSignups.map((d) => ({ ...d, url: `${BASE_PATH}/signup/${d.hash}` })); + return directSignups.map((d) => ({ ...d, url: `${BASE_PATH}/signup/${d.code}` })); } -export async function getDirectSignupByHash(db: Database, values: GetDirectSignupByHashReq) { +export async function getDirectSignupByCode(db: Database, values: GetDirectSignupByCodeReq) { const directSignups = await db .select({ - hash: directSignup.hash, + code: directSignup.code, user: user }) .from(directSignup) .leftJoin(user, eq(directSignup.userId, user.id)) - .where(eq(directSignup.hash, values.hash)) + .where(eq(directSignup.code, values.code)) .limit(1); return directSignups[0] ?? null; diff --git a/src/pages/signup/[...hash].astro b/src/pages/signup/[...code].astro similarity index 75% rename from src/pages/signup/[...hash].astro rename to src/pages/signup/[...code].astro index eee2e1f..d22a460 100644 --- a/src/pages/signup/[...hash].astro +++ b/src/pages/signup/[...code].astro @@ -2,14 +2,14 @@ import { db } from '@db/database.ts'; import Signup from '@app/website/signup/Signup.astro'; -const { hash } = Astro.params; +const { code } = Astro.params; -const directSignup = await db.getDirectSignupByHash({ hash: hash! }); +const directSignup = await db.getDirectSignupByCode({ code: code! }); if (!directSignup) return new Response(null, { status: 404 }); ---