增加打手登录设备管理与三台设备限制

This commit is contained in:
yml2213
2026-08-17 15:26:40 +08:00
parent 8d18daa0fe
commit f938ab0cba
13 changed files with 722 additions and 20 deletions
+77 -4
View File
@@ -20,6 +20,10 @@ import {
listWorkerMyOrders,
getWorkerMyOrderEvents,
loginWorker,
getWorkerSessions,
deleteWorkerSession,
manageWorkerSessions,
deleteWorkerSessionWithCredentials,
logoutWorkerSession,
registerWorker,
sendWorkerSmsCode,
@@ -79,11 +83,59 @@ router.post(
max: 10,
key: getBodyFieldRateLimitKey('username'),
}),
createRouteHandler((req) => loginWorker(req.body?.username, req.body?.password), {
successMessage: '登录成功',
errorMessage: '接单端登录失败',
scope: '[worker/auth/login]',
createRouteHandler(
(req) =>
loginWorker(req.body?.username, req.body?.password, {
deviceId: req.body?.deviceId,
deviceType: req.body?.deviceType,
deviceName: req.body?.deviceName,
userAgent: req.headers['user-agent'],
ipAddress: req.ip,
}),
{
successMessage: '登录成功',
errorMessage: '接单端登录失败',
scope: '[worker/auth/login]',
},
),
)
router.post(
'/auth/devices/manage/list',
createRateLimitMiddleware({
scope: 'worker:devices-manage',
windowMs: 60_000,
max: 10,
key: getBodyFieldRateLimitKey('username'),
}),
createRouteHandler((req) => manageWorkerSessions(req.body?.username, req.body?.password), {
successMessage: 'ok',
errorMessage: '读取登录设备失败',
scope: '[worker/auth/devices/manage/list]',
}),
)
router.post(
'/auth/devices/manage/delete',
createRateLimitMiddleware({
scope: 'worker:devices-manage-delete',
windowMs: 60_000,
max: 10,
key: getBodyFieldRateLimitKey('username'),
}),
createRouteHandler(
(req) =>
deleteWorkerSessionWithCredentials(
req.body?.username,
req.body?.password,
req.body?.sessionId,
),
{
successMessage: '登录设备已删除',
errorMessage: '删除登录设备失败',
scope: '[worker/auth/devices/manage/delete]',
},
),
)
router.get(
@@ -106,6 +158,27 @@ router.post(
router.use(requireWorkerSession)
router.get(
'/auth/devices',
createRouteHandler((req) => getWorkerSessions(getRequiredWorkerSession(req)), {
successMessage: 'ok',
errorMessage: '读取登录设备失败',
scope: '[worker/auth/devices]',
}),
)
router.delete(
'/auth/devices/:sessionId',
createRouteHandler(
(req) => deleteWorkerSession(getRequiredWorkerSession(req), req.params.sessionId),
{
successMessage: '登录设备已删除',
errorMessage: '删除登录设备失败',
scope: '[worker/auth/devices/delete]',
},
),
)
router.get('/realtime', (req, res) => {
openWorkerRealtimeStream(res, getRequiredWorkerSession(req).workerId)
})