新增接单平台第一期闭环
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
import type { NextFunction, Request, Response } from 'express'
|
||||
|
||||
import {
|
||||
requireActiveWorkerSession,
|
||||
verifyWorkerSessionToken,
|
||||
type WorkerSession,
|
||||
} from '../../services/worker-platform/worker-platform-service.js'
|
||||
import { createHttpError, sendRouteError } from '../../utils/http.js'
|
||||
|
||||
export async function requireWorkerSession(req: Request, res: Response, next: NextFunction): Promise<void> {
|
||||
try {
|
||||
req.workerSession = await verifyWorkerSessionToken(extractWorkerBearerToken(req))
|
||||
next()
|
||||
} catch (error) {
|
||||
sendRouteError(res, error, '接单端鉴权失败', '[worker/auth]')
|
||||
}
|
||||
}
|
||||
|
||||
export function requireActiveWorker(req: Request, res: Response, next: NextFunction): void {
|
||||
try {
|
||||
requireActiveWorkerSession(req.workerSession)
|
||||
next()
|
||||
} catch (error) {
|
||||
sendRouteError(res, error, '接单账号审核状态无效', '[worker/auth/active]')
|
||||
}
|
||||
}
|
||||
|
||||
export function getRequiredWorkerSession(req: Request): WorkerSession {
|
||||
if (req.workerSession) {
|
||||
return req.workerSession
|
||||
}
|
||||
|
||||
throw createHttpError('未登录或登录已失效', {
|
||||
statusCode: 401,
|
||||
errorCode: 'worker_auth_required',
|
||||
})
|
||||
}
|
||||
|
||||
export function extractWorkerBearerToken(req: Request): string {
|
||||
const authorization = String(req.headers.authorization || '').trim()
|
||||
const matched = authorization.match(/^Bearer\s+(.+)$/i)
|
||||
if (!matched?.[1]) {
|
||||
throw createHttpError('未登录或登录已失效', {
|
||||
statusCode: 401,
|
||||
errorCode: 'worker_auth_required',
|
||||
})
|
||||
}
|
||||
|
||||
return matched[1].trim()
|
||||
}
|
||||
Reference in New Issue
Block a user