From 0127c3a191b82fd671df117ef385d681460ba901 Mon Sep 17 00:00:00 2001 From: AeCw Date: Fri, 13 Feb 2026 17:39:19 +0800 Subject: [PATCH] update --- src/api/mod.rs | 1 + src/api/user.rs | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/api/mod.rs b/src/api/mod.rs index 62a5777..9aa19ca 100644 --- a/src/api/mod.rs +++ b/src/api/mod.rs @@ -27,6 +27,7 @@ pub fn configure_routes() -> Router { auth::logout, user::get_users, user::get_user, + user::get_current_user, user::update_user, user::update_user_group, user::delete_user, diff --git a/src/api/user.rs b/src/api/user.rs index 4f3d9b0..01478f2 100644 --- a/src/api/user.rs +++ b/src/api/user.rs @@ -23,6 +23,7 @@ pub fn routes() -> Router { Router::new() .route("/", get(get_users)) .route("/", post(create_user)) + .route("/me", get(get_current_user)) .route("/{osu_id}", get(get_user)) .route("/{osu_id}", put(update_user)) .route("/{osu_id}", delete(delete_user)) @@ -88,6 +89,31 @@ async fn get_user( Ok(Json(ApiResponse::success(UserResponse::from(user)))) } +#[utoipa::path( + get, + path = "/api/users/me", + responses( + (status = 200, description = "获取当前玩家信息成功", body = UserResponse), + (status = 401, description = "未授权"), + (status = 404, description = "玩家不存在"), + ), + tag = "users" +)] +async fn get_current_user( + State(state): State, + auth_user: AuthUser, +) -> Result>> { + let service = UserService::new(state.db); + let user = service + .find_by_osu_id(&auth_user.osu_id) + .await? + .ok_or_else(|| { + crate::error::AppError::NotFound(format!("玩家 {} 不存在", auth_user.osu_id)) + })?; + + Ok(Json(ApiResponse::success(UserResponse::from(user)))) +} + #[utoipa::path( post, path = "/api/users",