mirror of
https://gitlab.massbug.com/massbug/judge4c.git
synced 2025-07-04 15:12:22 +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 { Hono } from "hono";
|
||||||
|
import { ID } from "node-appwrite";
|
||||||
|
import { AUTH_COOKIE } from "../constants";
|
||||||
import { zValidator } from "@hono/zod-validator";
|
import { zValidator } from "@hono/zod-validator";
|
||||||
|
import { createAdminClient } from "@/lib/appwrite";
|
||||||
|
import { deleteCookie, setCookie } from "hono/cookie";
|
||||||
import { loginSchema, registerSchema } from "../schema";
|
import { loginSchema, registerSchema } from "../schema";
|
||||||
|
|
||||||
const app = new Hono()
|
const app = new Hono()
|
||||||
.post("/login", zValidator("json", loginSchema), async (c) => {
|
.post("/login", zValidator("json", loginSchema), async (c) => {
|
||||||
const { email, password } = c.req.valid("json");
|
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) => {
|
.post("/register", zValidator("json", registerSchema), async (c) => {
|
||||||
const { name, email, password } = c.req.valid("json");
|
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;
|
export default app;
|
||||||
|
Loading…
Reference in New Issue
Block a user