mirror of
https://github.com/khairul169/home-lab.git
synced 2025-04-28 16:49:36 +07:00
35 lines
930 B
TypeScript
35 lines
930 B
TypeScript
import { zValidator } from "@hono/zod-validator";
|
|
import { Hono } from "hono";
|
|
import { HTTPException } from "hono/http-exception";
|
|
import { z } from "zod";
|
|
import { generateToken } from "../lib/jwt";
|
|
import { nanoid } from "nanoid";
|
|
|
|
const loginSchema = z.object({
|
|
username: z.string().min(1),
|
|
password: z.string().min(1),
|
|
});
|
|
type LoginSchema = z.infer<typeof loginSchema>;
|
|
|
|
const route = new Hono().post(
|
|
"/login",
|
|
zValidator("json", loginSchema),
|
|
async (c) => {
|
|
const input: LoginSchema = await c.req.json();
|
|
const { AUTH_USERNAME, AUTH_PASSWORD } = process.env;
|
|
|
|
if (input.username !== AUTH_USERNAME || input.password !== AUTH_PASSWORD) {
|
|
throw new HTTPException(400, {
|
|
message: "Username or password is invalid!",
|
|
});
|
|
}
|
|
|
|
const data = { sessionId: nanoid() };
|
|
const token = await generateToken(data);
|
|
|
|
return c.json({ token, ...data });
|
|
}
|
|
);
|
|
|
|
export default route;
|