- 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.
22 lines
640 B
Rust
22 lines
640 B
Rust
use sea_orm::{DatabaseConnection, Unchanged};
|
|
|
|
use app::persistence::user::create_user;
|
|
use models::domains::user;
|
|
use models::params::user::CreateUserParams;
|
|
|
|
pub(super) async fn test_user(db: &DatabaseConnection) {
|
|
let params = CreateUserParams {
|
|
username: "test".to_string(),
|
|
password: "password".to_string(),
|
|
};
|
|
|
|
let user = create_user(db, params).await.expect("Create user failed!");
|
|
let expected = user::ActiveModel {
|
|
id: Unchanged(1),
|
|
username: Unchanged("test".to_owned()),
|
|
password_hash: Unchanged(None),
|
|
..Default::default()
|
|
};
|
|
assert_eq!(user, expected);
|
|
}
|