- Added `bcrypt`, `jsonwebtoken`, and `once_cell` dependencies to manage password hashing and JWT handling. - Created `Claims` struct for JWT claims and implemented token generation in the login route. - Implemented user registration and authentication logic in the `auth` module. - Updated error handling to include validation errors. - Created new routes for user registration and login, and integrated them into the main router. - Added tests for the authentication flow, including registration and login scenarios. - Updated user model to include a password hash field. - Refactored user creation logic to include password validation. - Adjusted feed and user routes to utilize JWT for authentication.
29 lines
724 B
Rust
29 lines
724 B
Rust
use axum::Router;
|
|
|
|
pub mod auth;
|
|
pub mod feed;
|
|
pub mod root;
|
|
pub mod thought;
|
|
pub mod user;
|
|
|
|
use crate::routers::auth::create_auth_router;
|
|
use app::state::AppState;
|
|
use root::create_root_router;
|
|
use tower_http::cors::CorsLayer;
|
|
use user::create_user_router;
|
|
|
|
use crate::routers::{feed::create_feed_router, thought::create_thought_router};
|
|
|
|
pub fn create_router(state: AppState) -> Router {
|
|
let cors = CorsLayer::permissive();
|
|
|
|
Router::new()
|
|
.merge(create_root_router())
|
|
.nest("/auth", create_auth_router())
|
|
.nest("/users", create_user_router())
|
|
.nest("/thoughts", create_thought_router())
|
|
.nest("/feed", create_feed_router())
|
|
.with_state(state)
|
|
.layer(cors)
|
|
}
|