拆分打手端路由
This commit is contained in:
@@ -0,0 +1,206 @@
|
||||
import { Router } from 'express'
|
||||
|
||||
import { createRateLimitMiddleware, getBodyFieldRateLimitKey } from '../../middleware/rate-limit.js'
|
||||
import {
|
||||
deleteWorkerSessionWithCredentials,
|
||||
getWorkerSessionSummary,
|
||||
loginWorker,
|
||||
loginWorkerBySmsCode,
|
||||
logoutWorkerSession,
|
||||
manageWorkerSessions,
|
||||
registerWorker,
|
||||
resetWorkerPassword,
|
||||
sendWorkerLoginSmsCode,
|
||||
sendWorkerPasswordResetSmsCode,
|
||||
sendWorkerSmsCode,
|
||||
} from '../../services/worker-platform/index.js'
|
||||
import {
|
||||
extractOptionalWorkerBearerToken,
|
||||
extractWorkerBearerToken,
|
||||
} from './session.js'
|
||||
import { createRouteHandler } from '../../utils/http.js'
|
||||
|
||||
const router = Router()
|
||||
|
||||
router.post(
|
||||
'/auth/sms-code',
|
||||
createRateLimitMiddleware({
|
||||
scope: 'worker:sms-code',
|
||||
windowMs: 60_000,
|
||||
max: 5,
|
||||
key: getBodyFieldRateLimitKey('phone'),
|
||||
}),
|
||||
createRouteHandler((req) => sendWorkerSmsCode(req.body || {}), {
|
||||
successMessage: '验证码已发送',
|
||||
errorMessage: '验证码发送失败',
|
||||
scope: '[worker/auth/sms-code]',
|
||||
}),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/auth/register',
|
||||
createRateLimitMiddleware({
|
||||
scope: 'worker:register',
|
||||
windowMs: 60_000,
|
||||
max: 5,
|
||||
key: getBodyFieldRateLimitKey('phone'),
|
||||
}),
|
||||
createRouteHandler((req) => registerWorker(req.body || {}), {
|
||||
successMessage: '注册成功,请使用手机号登录',
|
||||
errorMessage: '接单账号注册失败',
|
||||
scope: '[worker/auth/register]',
|
||||
}),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/auth/password-reset/sms-code',
|
||||
createRateLimitMiddleware({
|
||||
scope: 'worker:password-reset-sms-code',
|
||||
windowMs: 60_000,
|
||||
max: 5,
|
||||
key: getBodyFieldRateLimitKey('phone'),
|
||||
}),
|
||||
createRouteHandler((req) => sendWorkerPasswordResetSmsCode(req.body || {}), {
|
||||
successMessage: '验证码已发送',
|
||||
errorMessage: '验证码发送失败',
|
||||
scope: '[worker/auth/password-reset/sms-code]',
|
||||
}),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/auth/password-reset',
|
||||
createRateLimitMiddleware({
|
||||
scope: 'worker:password-reset',
|
||||
windowMs: 60_000,
|
||||
max: 10,
|
||||
key: getBodyFieldRateLimitKey('phone'),
|
||||
}),
|
||||
createRouteHandler((req) => resetWorkerPassword(req.body || {}), {
|
||||
successMessage: '密码已重置,请重新登录',
|
||||
errorMessage: '密码重置失败',
|
||||
scope: '[worker/auth/password-reset]',
|
||||
}),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/auth/login',
|
||||
createRateLimitMiddleware({
|
||||
scope: 'worker:login',
|
||||
windowMs: 60_000,
|
||||
max: 10,
|
||||
key: getBodyFieldRateLimitKey('username'),
|
||||
}),
|
||||
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/login/sms-code',
|
||||
createRateLimitMiddleware({
|
||||
scope: 'worker:login-sms-code',
|
||||
windowMs: 60_000,
|
||||
max: 5,
|
||||
key: getBodyFieldRateLimitKey('phone'),
|
||||
}),
|
||||
createRouteHandler((req) => sendWorkerLoginSmsCode(req.body || {}), {
|
||||
successMessage: '验证码已发送',
|
||||
errorMessage: '验证码发送失败',
|
||||
scope: '[worker/auth/login/sms-code]',
|
||||
}),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/auth/login/sms',
|
||||
createRateLimitMiddleware({
|
||||
scope: 'worker:login-sms',
|
||||
windowMs: 60_000,
|
||||
max: 10,
|
||||
key: getBodyFieldRateLimitKey('phone'),
|
||||
}),
|
||||
createRouteHandler(
|
||||
(req) =>
|
||||
loginWorkerBySmsCode(req.body?.phone, req.body?.code, {
|
||||
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/sms]',
|
||||
},
|
||||
),
|
||||
)
|
||||
|
||||
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(
|
||||
'/auth/session',
|
||||
createRouteHandler((req) => getWorkerSessionSummary(extractWorkerBearerToken(req)), {
|
||||
successMessage: 'ok',
|
||||
errorMessage: '读取接单登录态失败',
|
||||
scope: '[worker/auth/session]',
|
||||
}),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/auth/logout',
|
||||
createRouteHandler((req) => logoutWorkerSession(extractOptionalWorkerBearerToken(req)), {
|
||||
successMessage: '已退出登录',
|
||||
errorMessage: '退出失败',
|
||||
scope: '[worker/auth/logout]',
|
||||
}),
|
||||
)
|
||||
|
||||
export default router
|
||||
Reference in New Issue
Block a user