cargo fmt, fix lint
This commit is contained in:
parent
e83fa37d58
commit
b38c8c663c
@ -4,10 +4,10 @@ extern crate rocket;
|
|||||||
mod user;
|
mod user;
|
||||||
|
|
||||||
use rocket::fs::FileServer;
|
use rocket::fs::FileServer;
|
||||||
|
use rocket::response::Redirect;
|
||||||
use rocket::serde::{json::Json, Serialize};
|
use rocket::serde::{json::Json, Serialize};
|
||||||
use rocket_db_pools::{sqlx, Database};
|
use rocket_db_pools::{sqlx, Database};
|
||||||
use rocket_dyn_templates::{context, Template};
|
use rocket_dyn_templates::{context, Template};
|
||||||
use rocket::response::Redirect;
|
|
||||||
use user::AuthenticatedUser;
|
use user::AuthenticatedUser;
|
||||||
|
|
||||||
#[derive(Database)]
|
#[derive(Database)]
|
||||||
|
27
src/user.rs
27
src/user.rs
@ -1,9 +1,9 @@
|
|||||||
|
use bcrypt;
|
||||||
use chrono;
|
use chrono;
|
||||||
use rocket::http::{Cookie, CookieJar, Status};
|
use rocket::http::{Cookie, CookieJar, Status};
|
||||||
use rocket::serde::{json::Json, Deserialize, Serialize};
|
use rocket::serde::{json::Json, Deserialize, Serialize};
|
||||||
use rocket_db_pools::Connection;
|
use rocket_db_pools::Connection;
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
use bcrypt;
|
|
||||||
|
|
||||||
use crate::Db;
|
use crate::Db;
|
||||||
|
|
||||||
@ -19,7 +19,12 @@ pub struct User {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl User {
|
impl User {
|
||||||
pub fn new(username: String, password_hash: String, email: Option<String>, display_name: Option<String>) -> Self {
|
pub fn new(
|
||||||
|
username: String,
|
||||||
|
password_hash: String,
|
||||||
|
email: Option<String>,
|
||||||
|
display_name: Option<String>,
|
||||||
|
) -> Self {
|
||||||
User {
|
User {
|
||||||
id: Uuid::new_v4(),
|
id: Uuid::new_v4(),
|
||||||
username,
|
username,
|
||||||
@ -60,16 +65,16 @@ pub async fn create_user(
|
|||||||
new_user: Json<NewUser>,
|
new_user: Json<NewUser>,
|
||||||
) -> Result<Json<User>, Status> {
|
) -> Result<Json<User>, Status> {
|
||||||
let new_user = new_user.into_inner();
|
let new_user = new_user.into_inner();
|
||||||
|
|
||||||
// Hash the password - we'll use bcrypt
|
// Hash the password - we'll use bcrypt
|
||||||
let password_hash = bcrypt::hash(new_user.password.as_bytes(), bcrypt::DEFAULT_COST)
|
let password_hash = bcrypt::hash(new_user.password.as_bytes(), bcrypt::DEFAULT_COST)
|
||||||
.map_err(|_| Status::InternalServerError)?;
|
.map_err(|_| Status::InternalServerError)?;
|
||||||
|
|
||||||
let user = User::new(
|
let user = User::new(
|
||||||
new_user.username,
|
new_user.username,
|
||||||
password_hash,
|
password_hash,
|
||||||
new_user.email,
|
new_user.email,
|
||||||
new_user.display_name
|
new_user.display_name,
|
||||||
);
|
);
|
||||||
|
|
||||||
let query = sqlx::query(
|
let query = sqlx::query(
|
||||||
@ -169,7 +174,7 @@ pub async fn login(
|
|||||||
cookies: &CookieJar<'_>,
|
cookies: &CookieJar<'_>,
|
||||||
) -> Result<Json<LoginResponse>, Status> {
|
) -> Result<Json<LoginResponse>, Status> {
|
||||||
let creds = credentials.into_inner();
|
let creds = credentials.into_inner();
|
||||||
|
|
||||||
// Find user by username
|
// Find user by username
|
||||||
let user = sqlx::query!(
|
let user = sqlx::query!(
|
||||||
r#"
|
r#"
|
||||||
@ -214,7 +219,7 @@ pub async fn login(
|
|||||||
|
|
||||||
#[post("/logout")]
|
#[post("/logout")]
|
||||||
pub fn logout(cookies: &CookieJar<'_>) -> Status {
|
pub fn logout(cookies: &CookieJar<'_>) -> Status {
|
||||||
cookies.remove_private(Cookie::named("user_id"));
|
cookies.remove_private(Cookie::build("user_id"));
|
||||||
Status::NoContent
|
Status::NoContent
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,7 +232,9 @@ pub struct AuthenticatedUser {
|
|||||||
impl<'r> rocket::request::FromRequest<'r> for AuthenticatedUser {
|
impl<'r> rocket::request::FromRequest<'r> for AuthenticatedUser {
|
||||||
type Error = ();
|
type Error = ();
|
||||||
|
|
||||||
async fn from_request(request: &'r rocket::Request<'_>) -> rocket::request::Outcome<Self, Self::Error> {
|
async fn from_request(
|
||||||
|
request: &'r rocket::Request<'_>,
|
||||||
|
) -> rocket::request::Outcome<Self, Self::Error> {
|
||||||
match request.cookies().get_private("user_id") {
|
match request.cookies().get_private("user_id") {
|
||||||
Some(cookie) => {
|
Some(cookie) => {
|
||||||
if let Ok(user_id) = Uuid::parse_str(cookie.value()) {
|
if let Ok(user_id) = Uuid::parse_str(cookie.value()) {
|
||||||
@ -235,8 +242,8 @@ impl<'r> rocket::request::FromRequest<'r> for AuthenticatedUser {
|
|||||||
} else {
|
} else {
|
||||||
rocket::request::Outcome::Forward(Status::Unauthorized)
|
rocket::request::Outcome::Forward(Status::Unauthorized)
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
None => rocket::request::Outcome::Forward(Status::Unauthorized),
|
None => rocket::request::Outcome::Forward(Status::Unauthorized),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user