This commit is contained in:
jd
2026-02-13 00:07:19 +00:00
commit eca7405974
11 changed files with 300 additions and 0 deletions

29
endpoints/auth.ts Normal file
View File

@@ -0,0 +1,29 @@
import {BunRequest as Request} from "bun";
import {Claims, orm} from "../utilities/orm.ts";
import jwt from "jsonwebtoken";
async function login(request: Request): Promise<Response> {
try {
const requestBody = await request.json();
console.log(`/api/auth/login: username=${requestBody.username}`);
const claims: Claims | null = await orm.users.verify(requestBody.username, requestBody.password);
console.log(claims);
if (claims) {
const token = jwt.sign({...claims}, process.env.JWT_SECRET_KEY as string, {expiresIn: "24h"});
return Response.json({token: token}, {status: 200});
}
return Response.json({token: null}, {status: 401});
} catch (e) {
console.log(e);
return Response.json({message: e}, {status: 401});
}
}
async function test(request: Request, claims: Claims) {
return Response.json(claims, {status: 200});
}
export default {
login,
test
};

28
endpoints/user.ts Normal file
View File

@@ -0,0 +1,28 @@
import {Claims, orm} from "../utilities/orm";
import {BunRequest as Request} from 'bun';
async function create (request: Request, claims: Claims): Promise<Response> {
try {
const requestBody = await request.json();
return Response.json({
...(await orm.users.create(requestBody.username, requestBody.password, claims))
}, {status: 200});
} catch (e: any) {
return Response.json({message: e.message}, {status: 500});
}
}
async function get(request: Request, claims:Claims): Promise<Response> {
try {
return Response.json({
...(await orm.users.get(request.params.id, claims))
}, {status: 200});
} catch (e: any) {
return Response.json({message: e.message}, {status: 500});
}
}
export default {
create,
get,
}