fix(auth): web_login_confirm 查询改为精确匹配 code,修复 unwrap_or(None) 问题
This commit is contained in:
@@ -7,7 +7,7 @@ use tracing::{debug, error, info, warn};
|
||||
|
||||
use crate::auth::{generate_token, generate_refresh_token, verify_refresh_token};
|
||||
use crate::db;
|
||||
use crate::error::ErrorResponse;
|
||||
use crate::error::{AppError, ErrorResponse};
|
||||
use crate::models::Claims;
|
||||
use crate::models::{
|
||||
AppState, LoginResponse, RefreshTokenRequest, TokenRefreshResponse,
|
||||
@@ -472,13 +472,15 @@ pub async fn web_login_confirm(
|
||||
let short_code = req.code.trim();
|
||||
|
||||
// 查找登录码(模糊匹配,因为存入的是 ASD-XXXXXX 格式)
|
||||
let record: Option<(String, String, chrono::DateTime<chrono::Utc>, Option<i32>)> = sqlx::query_as(
|
||||
"SELECT code, openid, expires_at, user_id FROM web_login_codes WHERE code LIKE $1",
|
||||
)
|
||||
.bind(format!("%{}%", short_code))
|
||||
.fetch_optional(pool.get_ref())
|
||||
.await
|
||||
.unwrap_or(None);
|
||||
let record: Option<(String, String, chrono::DateTime<chrono::Utc>, Option<i32>)> =
|
||||
sqlx::query_as(
|
||||
"SELECT code, openid, expires_at, user_id FROM web_login_codes WHERE code = $1",
|
||||
)
|
||||
.bind(short_code)
|
||||
.fetch_optional(pool.get_ref())
|
||||
.await
|
||||
.ok()
|
||||
.flatten();
|
||||
|
||||
let (code, openid, expires_at, existing_user_id) = match record {
|
||||
Some(r) => r,
|
||||
|
||||
Reference in New Issue
Block a user