From 2a5200fe9d17deaab1ee7f1682a6570e900af65e Mon Sep 17 00:00:00 2001 From: static Date: Sat, 31 May 2025 21:36:27 +0900 Subject: [PATCH] =?UTF-8?q?Revert=20"=EB=8D=B0=EB=AA=A8=EC=9A=A9=20?= =?UTF-8?q?=EC=9E=84=EC=8B=9C=20=ED=9A=8C=EC=9B=90=EA=B0=80=EC=9E=85=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit eb913366646f43fda669f0550788e0888c44b95a. --- src/lib/server/db/user.ts | 9 ---- src/lib/server/middlewares/authenticate.ts | 2 +- src/lib/server/schemas/auth.ts | 7 ---- src/lib/server/services/auth.ts | 23 +--------- .../(fullscreen)/auth/login/+page.svelte | 42 +------------------ .../auth/login/NicknameModal.svelte | 18 -------- src/routes/(fullscreen)/auth/login/service.ts | 11 +---- src/routes/api/auth/register/+server.ts | 27 ------------ 8 files changed, 5 insertions(+), 134 deletions(-) delete mode 100644 src/routes/(fullscreen)/auth/login/NicknameModal.svelte delete mode 100644 src/routes/api/auth/register/+server.ts diff --git a/src/lib/server/db/user.ts b/src/lib/server/db/user.ts index 1804144..3964a94 100644 --- a/src/lib/server/db/user.ts +++ b/src/lib/server/db/user.ts @@ -7,15 +7,6 @@ interface User { password: string; } -export const createUser = async (email: string, nickname: string, password: string) => { - const { id } = await db - .insertInto("user") - .values({ email, nickname, password }) - .returning("id") - .executeTakeFirstOrThrow(); - return { id, email, nickname, password } satisfies User; -}; - export const getUser = async (userId: number) => { const user = await db .selectFrom("user") diff --git a/src/lib/server/middlewares/authenticate.ts b/src/lib/server/middlewares/authenticate.ts index 37ce672..8880f1a 100644 --- a/src/lib/server/middlewares/authenticate.ts +++ b/src/lib/server/middlewares/authenticate.ts @@ -3,7 +3,7 @@ import { authenticate, AuthenticationError } from "$lib/server/modules/auth"; export const authenticateMiddleware: Handle = async ({ event, resolve }) => { const { pathname, search } = event.url; - if (pathname === "/api/auth/login" || pathname === "/api/auth/register") { + if (pathname === "/api/auth/login") { return await resolve(event); } diff --git a/src/lib/server/schemas/auth.ts b/src/lib/server/schemas/auth.ts index 2a9fcec..e3d6264 100644 --- a/src/lib/server/schemas/auth.ts +++ b/src/lib/server/schemas/auth.ts @@ -12,13 +12,6 @@ export const loginRequest = z.object({ }); export type LoginRequest = z.infer; -export const registerRequest = z.object({ - email: z.string().email(), - nickname: z.string().trim().min(2).max(8), - password: z.string().trim().nonempty(), -}); -export type RegisterRequest = z.infer; - export const sessionUpgradeRequest = z.object({ encPubKey: z.string().base64().nonempty(), sigPubKey: z.string().base64().nonempty(), diff --git a/src/lib/server/services/auth.ts b/src/lib/server/services/auth.ts index e9fd91e..81f0333 100644 --- a/src/lib/server/services/auth.ts +++ b/src/lib/server/services/auth.ts @@ -9,7 +9,7 @@ import { registerSessionUpgradeChallenge, consumeSessionUpgradeChallenge, } from "$lib/server/db/session"; -import { createUser, getUser, getUserByEmail, setUserPassword } from "$lib/server/db/user"; +import { getUser, getUserByEmail, setUserPassword } from "$lib/server/db/user"; import env from "$lib/server/loadenv"; import { startSession } from "$lib/server/modules/auth"; import { verifySignature, generateChallenge } from "$lib/server/modules/crypto"; @@ -65,27 +65,6 @@ export const logout = async (sessionId: string) => { await deleteSession(sessionId); }; -export const register = async ( - email: string, - nickname: string, - password: string, - ip: string, - userAgent: string, -) => { - if (password.length < 8) { - error(400, "Too short password"); - } - - const existingUser = await getUserByEmail(email); - if (existingUser) { - error(409, "Email already registered"); - } - - const hashedPassword = await hashPassword(password); - const { id } = await createUser(email, nickname, hashedPassword); - return { sessionIdSigned: await startSession(id, ip, userAgent) }; -}; - export const createSessionUpgradeChallenge = async ( sessionId: string, userId: number, diff --git a/src/routes/(fullscreen)/auth/login/+page.svelte b/src/routes/(fullscreen)/auth/login/+page.svelte index b68c83a..ac3b1a5 100644 --- a/src/routes/(fullscreen)/auth/login/+page.svelte +++ b/src/routes/(fullscreen)/auth/login/+page.svelte @@ -3,21 +3,13 @@ import { BottomDiv, Button, FullscreenDiv, TextButton, TextInput } from "$lib/components/atoms"; import { TitledDiv } from "$lib/components/molecules"; import { clientKeyStore, masterKeyStore } from "$lib/stores"; - import NicknameModal from "./NicknameModal.svelte"; - import { - requestLogin, - requestRegister, - requestSessionUpgrade, - requestMasterKeyDownload, - } from "./service"; + import { requestLogin, requestSessionUpgrade, requestMasterKeyDownload } from "./service"; let { data } = $props(); let email = $state(""); let password = $state(""); - let isNicknameModalOpen = $state(false); - const redirect = async (url: string) => { return await goto(`${url}?redirect=${encodeURIComponent(data.redirectPath)}`); }; @@ -48,34 +40,6 @@ throw e; } }; - - const register = async (nickname: string) => { - // TODO: Validation - - try { - if (!(await requestRegister(email, nickname, password))) - throw new Error("Failed to register"); - - if (!$clientKeyStore) return await redirect("/key/generate"); - - if (!(await requestSessionUpgrade($clientKeyStore))) - throw new Error("Failed to upgrade session"); - - // TODO: Multi-user support - - if ( - $masterKeyStore || - (await requestMasterKeyDownload($clientKeyStore.decryptKey, $clientKeyStore.verifyKey)) - ) { - await goto(data.redirectPath); - } else { - await redirect("/client/pending"); - } - } catch (e) { - // TODO: Alert - throw e; - } - }; @@ -96,8 +60,6 @@ - (isNicknameModalOpen = true)}>계정이 없어요 + 계정이 없어요 - - diff --git a/src/routes/(fullscreen)/auth/login/NicknameModal.svelte b/src/routes/(fullscreen)/auth/login/NicknameModal.svelte deleted file mode 100644 index de71042..0000000 --- a/src/routes/(fullscreen)/auth/login/NicknameModal.svelte +++ /dev/null @@ -1,18 +0,0 @@ - - - diff --git a/src/routes/(fullscreen)/auth/login/service.ts b/src/routes/(fullscreen)/auth/login/service.ts index 56921fc..2d267e1 100644 --- a/src/routes/(fullscreen)/auth/login/service.ts +++ b/src/routes/(fullscreen)/auth/login/service.ts @@ -1,6 +1,6 @@ import { callPostApi } from "$lib/hooks"; import { exportRSAKeyToBase64 } from "$lib/modules/crypto"; -import type { LoginRequest, RegisterRequest } from "$lib/server/schemas"; +import type { LoginRequest } from "$lib/server/schemas"; import { requestSessionUpgrade as requestSessionUpgradeInternal } from "$lib/services/auth"; import { requestClientRegistration } from "$lib/services/key"; import type { ClientKeys } from "$lib/stores"; @@ -12,15 +12,6 @@ export const requestLogin = async (email: string, password: string) => { return res.ok; }; -export const requestRegister = async (email: string, nickname: string, password: string) => { - const res = await callPostApi("/api/auth/register", { - email, - nickname, - password, - }); - return res.ok; -}; - export const requestSessionUpgrade = async ({ encryptKey, decryptKey, diff --git a/src/routes/api/auth/register/+server.ts b/src/routes/api/auth/register/+server.ts deleted file mode 100644 index a1fe339..0000000 --- a/src/routes/api/auth/register/+server.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { error, text } from "@sveltejs/kit"; -import env from "$lib/server/loadenv"; -import { registerRequest } from "$lib/server/schemas"; -import { register } from "$lib/server/services/auth"; -import type { RequestHandler } from "./$types"; - -export const POST: RequestHandler = async ({ locals, request, cookies }) => { - const zodRes = registerRequest.safeParse(await request.json()); - if (!zodRes.success) error(400, "Invalid request body"); - const { email, nickname, password } = zodRes.data; - - const { sessionIdSigned } = await register( - email, - nickname, - password, - locals.ip, - locals.userAgent, - ); - cookies.set("sessionId", sessionIdSigned, { - path: "/", - maxAge: env.session.exp / 1000, - secure: true, - sameSite: "strict", - }); - - return text("Registered and logged in", { headers: { "Content-Type": "text/plain" } }); -};