Removed unneeded imports

This commit is contained in:
2026-05-10 10:26:16 +02:00
parent 33df619c8d
commit 535d940857
5 changed files with 31 additions and 44 deletions

View File

@@ -1,5 +1,5 @@
use axum::{Json, http::StatusCode};
use jsonwebtoken::{DecodingKey, EncodingKey, Header, Validation, decode, encode};
use jsonwebtoken::{DecodingKey, EncodingKey, Header, decode, encode};
use serde::{Deserialize, Serialize};
use crate::models::Claims;
@@ -65,7 +65,7 @@ pub fn decode_token(token: String, key: &DecodingKey) -> Result<Claims, (StatusC
validation.validate_exp = false;
validation.validate_nbf = false;
validation.leeway = 0;
let claims = decode::<Claims>(&token, key, &validation)
.map_err(|err| {
let message = format!("Invalid Token: {}", err);

View File

@@ -12,12 +12,7 @@ use axum_extra::extract::CookieJar;
use jsonwebtoken::DecodingKey;
use serde_json::json;
use crate::{
AppState,
cookie::jwt::decode_token,
handlers::auth::filter_user,
models::{LoginScheme, User},
};
use crate::{AppState, cookie::jwt::decode_token, handlers::auth::filter_user, models::User};
/// Axum middleware to validate a JWT token present in cookies or Authorization header.
///

View File

@@ -1,4 +1,4 @@
use std::{sync::Arc, usize};
use std::sync::Arc;
use argon2::{
Argon2, PasswordHash, PasswordHasher, PasswordVerifier,
@@ -11,7 +11,6 @@ use axum::{
response::IntoResponse,
};
use axum_extra::extract::cookie::{Cookie, SameSite};
use chrono::format;
use jsonwebtoken::{EncodingKey, Header};
use serde_json::json;
@@ -485,15 +484,16 @@ pub async fn update_user(
pub async fn check_admin_exists(
State(data): State<Arc<AppState>>,
) -> Result<impl IntoResponse, (StatusCode, Json<serde_json::Value>)> {
let admin_count = sqlx::query_scalar::<_, i64>(r#"SELECT COUNT(*) FROM users WHERE is_admin = true"#)
.fetch_one(&data.db)
.await
.map_err(|e| {
(
StatusCode::INTERNAL_SERVER_ERROR,
Json(json!({"status": "error", "message": format!("{:?}", e)})),
)
})?;
let admin_count =
sqlx::query_scalar::<_, i64>(r#"SELECT COUNT(*) FROM users WHERE is_admin = true"#)
.fetch_one(&data.db)
.await
.map_err(|e| {
(
StatusCode::INTERNAL_SERVER_ERROR,
Json(json!({"status": "error", "message": format!("{:?}", e)})),
)
})?;
let has_admin = admin_count > 0;
Ok(Json(json!({"has_admin": has_admin})))
@@ -528,15 +528,16 @@ pub async fn setup_initial_admin(
Json(request): Json<UserCreateScheme>,
) -> Result<impl IntoResponse, (StatusCode, Json<serde_json::Value>)> {
// Check if any admin already exists
let admin_count = sqlx::query_scalar::<_, i64>(r#"SELECT COUNT(*) FROM users WHERE is_admin = true"#)
.fetch_one(&data.db)
.await
.map_err(|e| {
(
StatusCode::INTERNAL_SERVER_ERROR,
Json(json!({"status": "error", "message": format!("{:?}", e)})),
)
})?;
let admin_count =
sqlx::query_scalar::<_, i64>(r#"SELECT COUNT(*) FROM users WHERE is_admin = true"#)
.fetch_one(&data.db)
.await
.map_err(|e| {
(
StatusCode::INTERNAL_SERVER_ERROR,
Json(json!({"status": "error", "message": format!("{:?}", e)})),
)
})?;
if admin_count > 0 {
return Err((
@@ -580,7 +581,9 @@ pub async fn setup_initial_admin(
Json(json!({"status": "error", "message": "Error creating admin user"})),
));
} else {
Ok(Json(json!({"status": "success", "result": "Admin user created"})))
Ok(Json(
json!({"status": "success", "result": "Admin user created"}),
))
}
}

View File

@@ -1,5 +1,3 @@
#![allow(unused_imports)]
/// Cookie and JWT authentication utilities
mod cookie;
/// Environment configuration loading
@@ -13,18 +11,12 @@ mod router;
use std::sync::Arc;
use axum::{
Router,
http::{
HeaderValue, Method,
header::{ACCEPT, AUTHORIZATION, CONTENT_TYPE},
},
routing,
use axum::http::{
HeaderValue, Method,
header::{ACCEPT, AUTHORIZATION, CONTENT_TYPE},
};
use dotenv::dotenv;
use models::*;
use router::create_router;
use serde::{Deserialize, Serialize};
use sqlx::{PgPool, postgres::PgPoolOptions};
use tower_http::cors::CorsLayer;
@@ -65,7 +57,7 @@ async fn main() {
dotenv().ok();
let env = Env::load();
let database_url = &env.db_url;
// Establish connection pool to PostgreSQL
let pool = match PgPoolOptions::new().connect(&database_url).await {
Ok(pool) => {

View File

@@ -1,7 +1,4 @@
use std::fmt::Display;
use serde::{Deserialize, Serialize};
use sqlx::{Decode, prelude::Type};
/// API response for a ticket with user information.
///