feat: 增加令牌禁用、启用、续期功能并优化错误处理
- 增加禁用Token和更新Token有效期功能并优化返回类型 - 增加令牌禁用、启用和续期功能,并优化令牌信息查询的错误处理
This commit is contained in:
126
src/main.rs
126
src/main.rs
@@ -46,6 +46,9 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
.route("/create", get(create_token))
|
||||
.route("/verify", get(verify_token))
|
||||
.route("/info", get(get_token_info))
|
||||
.route("/disable", get(disable_token))
|
||||
.route("/enable", get(enable_token))
|
||||
.route("/renewal", get(renewal_token))
|
||||
.with_state(state);
|
||||
|
||||
let listener = tokio::net::TcpListener::bind("127.0.0.1:3009")
|
||||
@@ -134,31 +137,118 @@ async fn get_token_info(
|
||||
State(state): State<AppState>,
|
||||
Query(args): Query<VerifyToken>,
|
||||
) -> (StatusCode, Json<TokenResponse>) {
|
||||
let ruth_info = state.db.get_token_info(&args.token).await.unwrap();
|
||||
let auth_info = state.db.get_token_info(&args.token).await.unwrap();
|
||||
match auth_info {
|
||||
Some(auth) => {
|
||||
let v = auth.into_inner();
|
||||
|
||||
match ruth_info {
|
||||
Some(v) => (
|
||||
StatusCode::OK,
|
||||
Json(TokenResponse::Success(TokenInfo {
|
||||
code: 200,
|
||||
project: v.project,
|
||||
token: v.token,
|
||||
device_id: v.device_id,
|
||||
disable: v.disable,
|
||||
expire: v.expire,
|
||||
insert_time: v.insert_time,
|
||||
})),
|
||||
),
|
||||
(
|
||||
StatusCode::OK,
|
||||
Json(TokenResponse::Success(TokenInfo {
|
||||
code: 200,
|
||||
project: v.project,
|
||||
token: v.token,
|
||||
device_id: v.device_id,
|
||||
disable: v.disable,
|
||||
expire: v.expire,
|
||||
insert_time: v.insert_time,
|
||||
})),
|
||||
)
|
||||
}
|
||||
None => (
|
||||
StatusCode::OK,
|
||||
Json(TokenResponse::Error(QueryError {
|
||||
code: 200,
|
||||
code: 404,
|
||||
msg: "未查询token相关信息".to_owned(),
|
||||
})),
|
||||
),
|
||||
}
|
||||
}
|
||||
|
||||
async fn disable_token(
|
||||
State(state): State<AppState>,
|
||||
Query(args): Query<VerifyToken>,
|
||||
) -> (StatusCode, Json<VerifyResult>) {
|
||||
let result = state.db.update_token_state(&args.token, 0).await.unwrap();
|
||||
if result {
|
||||
(
|
||||
StatusCode::OK,
|
||||
Json(VerifyResult {
|
||||
code: 200,
|
||||
msg: "操作成功".to_owned(),
|
||||
}),
|
||||
)
|
||||
} else {
|
||||
(
|
||||
StatusCode::OK,
|
||||
Json(VerifyResult {
|
||||
code: 404,
|
||||
msg: "操作失败".to_owned(),
|
||||
}),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
async fn enable_token(
|
||||
State(state): State<AppState>,
|
||||
Query(args): Query<VerifyToken>,
|
||||
) -> (StatusCode, Json<VerifyResult>) {
|
||||
let result = state.db.update_token_state(&args.token, 1).await.unwrap();
|
||||
if result {
|
||||
(
|
||||
StatusCode::OK,
|
||||
Json(VerifyResult {
|
||||
code: 200,
|
||||
msg: "操作成功".to_owned(),
|
||||
}),
|
||||
)
|
||||
} else {
|
||||
(
|
||||
StatusCode::OK,
|
||||
Json(VerifyResult {
|
||||
code: 404,
|
||||
msg: "操作失败".to_owned(),
|
||||
}),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
async fn renewal_token(
|
||||
State(state): State<AppState>,
|
||||
Query(args): Query<RenewalToken>,
|
||||
) -> (StatusCode, Json<TokenResponse>) {
|
||||
let auth_info = state
|
||||
.db
|
||||
.update_token_expiry(&args.token, args.days)
|
||||
.await
|
||||
.unwrap();
|
||||
match auth_info {
|
||||
Some(auth) => {
|
||||
let v = auth.into_inner();
|
||||
|
||||
(
|
||||
StatusCode::OK,
|
||||
Json(TokenResponse::Success(TokenInfo {
|
||||
code: 200,
|
||||
project: v.project,
|
||||
token: v.token,
|
||||
device_id: v.device_id,
|
||||
disable: v.disable,
|
||||
expire: v.expire,
|
||||
insert_time: v.insert_time,
|
||||
})),
|
||||
)
|
||||
}
|
||||
None => (
|
||||
StatusCode::OK,
|
||||
Json(TokenResponse::Error(QueryError {
|
||||
code: 404,
|
||||
msg: "操作失败".to_owned(),
|
||||
})),
|
||||
),
|
||||
}
|
||||
}
|
||||
|
||||
fn get_current_datetime() -> String {
|
||||
Local::now().format("%Y-%m-%d %H:%M:%S").to_string()
|
||||
}
|
||||
@@ -224,3 +314,9 @@ struct CreateTokenInfo {
|
||||
token: String,
|
||||
msg: String,
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
struct RenewalToken {
|
||||
token: String,
|
||||
days: i64,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user