feat: migrate runtime backend to node server

This commit is contained in:
victo
2026-04-08 16:41:29 +08:00
parent 9d2fc9e4b8
commit a83841ff2d
70 changed files with 8239 additions and 1561 deletions

View File

@@ -0,0 +1,53 @@
import { Router } from 'express';
import { z } from 'zod';
import { entryWithPassword, logoutUser } from '../auth/authService.js';
import type { AppContext } from '../context.js';
import { asyncHandler } from '../http.js';
import { requireJwtAuth } from '../middleware/auth.js';
const authEntrySchema = z.object({
username: z.string(),
password: z.string(),
});
export function createAuthRoutes(context: AppContext) {
const router = Router();
const requireAuth = requireJwtAuth(context.config, context.userRepository);
router.post(
'/entry',
asyncHandler(async (request, response) => {
const payload = authEntrySchema.parse(request.body);
response.json(
await entryWithPassword(context, payload.username, payload.password),
);
}),
);
router.get(
'/me',
requireAuth,
asyncHandler(async (request, response) => {
const user = context.userRepository.findById(request.userId!);
response.json({
user: user
? {
id: user.id,
username: user.username,
}
: null,
});
}),
);
router.post(
'/logout',
requireAuth,
asyncHandler(async (request, response) => {
response.json(await logoutUser(context, request.userId!));
}),
);
return router;
}