fix: generate i64 session ids instead of u64
parent
48b3191117
commit
7cf0e44b65
|
@ -292,6 +292,7 @@ dependencies = [
|
|||
"chrono",
|
||||
"r2d2",
|
||||
"r2d2_sqlite",
|
||||
"rand",
|
||||
"rusqlite",
|
||||
"serde",
|
||||
"tera",
|
||||
|
|
|
@ -14,6 +14,7 @@ axum-extra = { version = "0.10.0", features = ["cookie"] }
|
|||
chrono = { version = "0.4.39", features = ["serde"] }
|
||||
r2d2 = "0.8.10"
|
||||
r2d2_sqlite = "0.25.0"
|
||||
rand = "0.8.5"
|
||||
# this dependency is needed soly because the r2d2_sqlite crate doesn't export
|
||||
# the 'chrono' feature flag
|
||||
rusqlite = { version = "0.32.1", features = ["chrono", "bundled"] }
|
||||
|
|
|
@ -5,14 +5,14 @@ use super::{DbError, DbPool};
|
|||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
pub struct Comment {
|
||||
id: i32,
|
||||
plant_id: i32,
|
||||
id: i64,
|
||||
plant_id: i64,
|
||||
comment: String,
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
pub struct NewComment {
|
||||
plant_id: i32,
|
||||
plant_id: i64,
|
||||
comment: String,
|
||||
}
|
||||
|
||||
|
|
|
@ -64,8 +64,8 @@ impl FromSql for EventType {
|
|||
|
||||
#[derive(Serialize)]
|
||||
pub struct Event {
|
||||
id: i32,
|
||||
plant_id: i32,
|
||||
id: i64,
|
||||
plant_id: i64,
|
||||
event_type: EventType,
|
||||
date: NaiveDate,
|
||||
description: String,
|
||||
|
@ -85,7 +85,7 @@ impl Event {
|
|||
|
||||
#[derive(Deserialize)]
|
||||
pub struct NewEvent {
|
||||
plant_id: i32,
|
||||
plant_id: i64,
|
||||
event_type: EventType,
|
||||
date: NaiveDate,
|
||||
description: String,
|
||||
|
|
|
@ -5,7 +5,7 @@ use super::{Comment, DbError, DbPool, Event};
|
|||
|
||||
#[derive(Serialize)]
|
||||
pub struct Plant {
|
||||
id: i32,
|
||||
id: i64,
|
||||
name: String,
|
||||
species: String,
|
||||
description: String,
|
||||
|
@ -37,7 +37,7 @@ impl Plant {
|
|||
Ok(plants?)
|
||||
}
|
||||
|
||||
pub fn by_id(pool: &DbPool, id: i32) -> Result<Option<Self>, DbError> {
|
||||
pub fn by_id(pool: &DbPool, id: i64) -> Result<Option<Self>, DbError> {
|
||||
let conn = pool.get()?;
|
||||
|
||||
let mut stmt = conn.prepare("select * from plants where id = $1")?;
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
use argon2::password_hash::rand_core::{OsRng, RngCore};
|
||||
use rand::Rng;
|
||||
use rusqlite::Row;
|
||||
|
||||
use super::{DbError, DbPool, User};
|
||||
|
||||
pub struct Session {
|
||||
pub id: u64,
|
||||
pub id: i64,
|
||||
pub user_id: i32,
|
||||
}
|
||||
|
||||
|
@ -16,7 +17,7 @@ impl Session {
|
|||
})
|
||||
}
|
||||
|
||||
pub fn user_from_id(pool: &DbPool, id: u64) -> Result<Option<super::User>, DbError> {
|
||||
pub fn user_from_id(pool: &DbPool, id: i64) -> Result<Option<super::User>, DbError> {
|
||||
let conn = pool.get()?;
|
||||
|
||||
let mut stmt = conn.prepare("select users.* from sessions inner join users on sessions.user_id = users.id where sessions.id = $1")?;
|
||||
|
@ -27,8 +28,8 @@ impl Session {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn new_for_user(pool: &DbPool, user_id: i32) -> Result<Self, DbError> {
|
||||
let id: u64 = OsRng.next_u64();
|
||||
pub fn new_for_user(pool: &DbPool, user_id: i64) -> Result<Self, DbError> {
|
||||
let id: i64 = rand::thread_rng().gen();
|
||||
|
||||
let conn = pool.get()?;
|
||||
let mut stmt =
|
||||
|
|
|
@ -9,7 +9,7 @@ use super::{DbError, DbPool};
|
|||
|
||||
#[derive(Serialize, Deserialize, Clone)]
|
||||
pub struct User {
|
||||
pub id: i32,
|
||||
pub id: i64,
|
||||
pub username: String,
|
||||
pub password_hash: String,
|
||||
pub admin: bool,
|
||||
|
|
|
@ -22,7 +22,7 @@ pub fn logged_in_user(pool: &DbPool, headers: &HeaderMap) -> Result<Option<User>
|
|||
|
||||
if let Some(session_id) = jar
|
||||
.get("session_id")
|
||||
.and_then(|c| c.value().parse::<u64>().ok())
|
||||
.and_then(|c| c.value().parse::<i64>().ok())
|
||||
{
|
||||
Session::user_from_id(pool, session_id)
|
||||
} else {
|
||||
|
|
|
@ -20,7 +20,7 @@ pub fn app() -> axum::Router<crate::Context> {
|
|||
async fn get_plant_page(
|
||||
State(ctx): State<crate::Context>,
|
||||
headers: HeaderMap,
|
||||
Path(plant_id): Path<i32>,
|
||||
Path(plant_id): Path<i64>,
|
||||
) -> super::Result<Html<String>> {
|
||||
let res = tokio::task::spawn_blocking(move || {
|
||||
let plant = Plant::by_id(&ctx.pool, plant_id)?;
|
||||
|
|
Loading…
Reference in New Issue