概览页增加后台登录记录
登录成功/失败写入 admin_login_logs,系统概览下方展示全部账号的时间、IP、设备等信息。
This commit is contained in:
@@ -2,6 +2,11 @@ import { Router } from 'express'
|
||||
|
||||
import { createRateLimitMiddleware, getBodyFieldRateLimitKey } from '../../middleware/rate-limit.js'
|
||||
import { getAdminSessionSummary, loginAdmin } from '../../services/admin/admin-auth-service.js'
|
||||
import {
|
||||
resolveClientIp,
|
||||
resolveClientLocation,
|
||||
resolveUserAgent,
|
||||
} from '../../services/admin/admin-login-log-service.js'
|
||||
import { createJsonHandler, extractBearerToken } from './session.js'
|
||||
|
||||
const router = Router()
|
||||
@@ -12,7 +17,11 @@ router.post('/auth/login', createRateLimitMiddleware({
|
||||
max: 10,
|
||||
key: getBodyFieldRateLimitKey('username'),
|
||||
}), createJsonHandler(
|
||||
(req) => loginAdmin(req.body?.username, req.body?.password),
|
||||
(req) => loginAdmin(req.body?.username, req.body?.password, {
|
||||
ip: resolveClientIp(req),
|
||||
userAgent: resolveUserAgent(req),
|
||||
location: resolveClientLocation(req),
|
||||
}),
|
||||
{
|
||||
successMessage: '登录成功',
|
||||
errorMessage: '后台登录失败',
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import { Router } from 'express'
|
||||
import type { JsonObject } from '../../types/json.js'
|
||||
|
||||
import { getAdminDashboardSummary } from '../../services/admin/admin-dashboard-service.js'
|
||||
import { getAdminLoginLogs } from '../../services/admin/admin-login-log-service.js'
|
||||
import { createJsonHandler } from './session.js'
|
||||
|
||||
const router = Router()
|
||||
@@ -14,4 +16,13 @@ router.get('/dashboard/summary', createJsonHandler(
|
||||
},
|
||||
))
|
||||
|
||||
router.get('/dashboard/login-logs', createJsonHandler(
|
||||
(req) => getAdminLoginLogs(req.query as JsonObject),
|
||||
{
|
||||
successMessage: 'ok',
|
||||
errorMessage: '读取登录记录失败',
|
||||
scope: '[admin/dashboard/login-logs]',
|
||||
},
|
||||
))
|
||||
|
||||
export default router
|
||||
|
||||
Reference in New Issue
Block a user