Files
ln-bi/src/server/routes/energy/index.ts
T
shishengliang 6ea1b3d5dd
ci/woodpecker/push/woodpecker Pipeline failed
revert: restore v1.1.14 (37a9f303)
2026-09-16 09:29:30 +08:00

34 lines
1.3 KiB
TypeScript

import { Hono } from 'hono';
import type { AuthUser } from '../../auth/types.js';
import { canAccessEnergy } from '../../auth/types.js';
import pool from '../../db.js';
import hydrogenPool from '../../hydrogen-db.js';
import { cached } from './cache.js';
import {
registerElectricMonthlyRoute,
registerElectricOverviewRoute,
} from './electric.js';
import { registerHydrogenDailyRoute } from './hydrogen-daily.js';
import { registerHydrogenOverviewRoute } from './hydrogen-overview.js';
const app = new Hono();
// 模块级访问守卫:dev 旁路 auth 时 user 为 undefined,直接放行;
// 生产环境必须具备 BI-LEADER-ENERGY 或全量权限角色
app.use('*', async (c, next) => {
const user = (c as { get: (k: string) => unknown }).get('user') as AuthUser | undefined;
if (user && !canAccessEnergy(user.roles)) {
return c.json({ error: 'Forbidden: 能源管理访问需要 BI-LEADER-ENERGY 角色' }, 403);
}
return next();
});
const cacheDependency = { cached };
registerHydrogenOverviewRoute(app, { ...cacheDependency, hydrogenPool });
registerHydrogenDailyRoute(app, { ...cacheDependency, hydrogenPool });
registerElectricOverviewRoute(app, { ...cacheDependency, pool });
registerElectricMonthlyRoute(app, { ...cacheDependency, pool });
export default app;