|
|
@@ -59,13 +59,38 @@ const loginRoute = createRoute({
|
|
|
schema: ErrorSchema
|
|
|
}
|
|
|
}
|
|
|
+ },
|
|
|
+ 500: {
|
|
|
+ description: '服务器内部错误',
|
|
|
+ content: {
|
|
|
+ 'application/json': {
|
|
|
+ schema: ErrorSchema
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
})
|
|
|
const app = new OpenAPIHono<AuthContext>().openapi(loginRoute, async (c) => {
|
|
|
- const { username, password } = c.req.valid('json')
|
|
|
- const result = await authService.login(username, password)
|
|
|
- return c.json(result, 200)
|
|
|
+ try {
|
|
|
+ const { username, password } = c.req.valid('json')
|
|
|
+ const result = await authService.login(username, password)
|
|
|
+ return c.json(result, 200)
|
|
|
+ } catch (error) {
|
|
|
+ // 认证相关错误返回401
|
|
|
+ if (error instanceof Error &&
|
|
|
+ (error.message.includes('User not found') || error.message.includes('Invalid password'))) {
|
|
|
+ return c.json(
|
|
|
+ {
|
|
|
+ code: 401,
|
|
|
+ message: '用户名或密码错误'
|
|
|
+ },
|
|
|
+ 401
|
|
|
+ )
|
|
|
+ }
|
|
|
+
|
|
|
+ // 其他错误重新抛出,由错误处理中间件处理
|
|
|
+ throw error
|
|
|
+ }
|
|
|
});
|
|
|
|
|
|
export default app
|