mirror of
https://gitlab.massbug.com/massbug/judge4c.git
synced 2025-07-04 10:04:17 +00:00
feat(auth): implement login, register, and logout endpoints with cookie management
This commit is contained in:
parent
e1dfce9f26
commit
b4a986f51e
@ -1,17 +1,50 @@
|
||||
import { Hono } from "hono";
|
||||
import { ID } from "node-appwrite";
|
||||
import { AUTH_COOKIE } from "../constants";
|
||||
import { zValidator } from "@hono/zod-validator";
|
||||
import { createAdminClient } from "@/lib/appwrite";
|
||||
import { deleteCookie, setCookie } from "hono/cookie";
|
||||
import { loginSchema, registerSchema } from "../schema";
|
||||
|
||||
const app = new Hono()
|
||||
.post("/login", zValidator("json", loginSchema), async (c) => {
|
||||
const { email, password } = c.req.valid("json");
|
||||
console.log({ email, password });
|
||||
return c.json({ email, password });
|
||||
|
||||
const { account } = await createAdminClient();
|
||||
const session = await account.createEmailPasswordSession(email, password);
|
||||
|
||||
setCookie(c, AUTH_COOKIE, session.secret, {
|
||||
path: "/",
|
||||
httpOnly: true,
|
||||
secure: true,
|
||||
sameSite: "strict",
|
||||
maxAge: 60 * 60 * 24 * 30,
|
||||
});
|
||||
|
||||
return c.json({ success: true });
|
||||
})
|
||||
.post("/register", zValidator("json", registerSchema), async (c) => {
|
||||
const { name, email, password } = c.req.valid("json");
|
||||
console.log({ name, email, password });
|
||||
return c.json({ name, email, password });
|
||||
|
||||
const { account } = await createAdminClient();
|
||||
await account.create(ID.unique(), email, password, name);
|
||||
|
||||
const session = await account.createEmailPasswordSession(email, password);
|
||||
|
||||
setCookie(c, AUTH_COOKIE, session.secret, {
|
||||
path: "/",
|
||||
httpOnly: true,
|
||||
secure: true,
|
||||
sameSite: "strict",
|
||||
maxAge: 60 * 60 * 24 * 30,
|
||||
});
|
||||
|
||||
return c.json({ success: true });
|
||||
})
|
||||
.post("/logout", (c) => {
|
||||
deleteCookie(c, AUTH_COOKIE);
|
||||
|
||||
return c.json({ success: true });
|
||||
});
|
||||
|
||||
export default app;
|
||||
|
Loading…
Reference in New Issue
Block a user