Files
cwd/src/index.ts
2026-01-14 10:02:58 +08:00

44 lines
1.4 KiB
TypeScript

import { Hono } from 'hono'
import { cors } from 'hono/cors'
import { Bindings } from './bindings'
import { LoginView } from './views/login'
import { AdminView } from './views/admin'
import { customCors } from './utils/cors'
import { adminAuth } from './utils/auth'
import { getComments } from './api/public/getComments'
import { postComment } from './api/public/postComment'
import { adminLogin } from './api/admin/login'
import { deleteComment } from './api/admin/deleteComment'
import { listComments } from './api/admin/listComments'
import { updateStatus } from './api/admin/updateStatus'
const app = new Hono<{ Bindings: Bindings }>()
// 跨域
app.use('/api/*', async (c, next) => {
const corsMiddleware = customCors(c.env.ALLOW_ORIGIN)
return corsMiddleware(c, next)
})
app.use('/admin/*', async (c, next) => {
const corsMiddleware = customCors(c.env.ALLOW_ORIGIN)
return corsMiddleware(c, next)
})
// 页面路由
app.get('/', (c) => c.redirect('/login'))
app.get('/login', (c) => c.html(LoginView))
app.get('/admin', (c) => c.html(AdminView))
// API
app.get('/api/comments', getComments)
app.post('/api/comments', postComment)
app.post('/admin/login', adminLogin)
app.use('/admin/*', adminAuth)
app.delete('/admin/comments/delete', deleteComment);
app.get('/admin/comments/list', listComments);
app.put('/admin/comments/status', updateStatus);
export default app