auth: Split off vote data from the user
Now that the application is going to have multiple pages, vote data makes no sense to keep with the user. The user struct will be used everywhere to check for authentication, which is not the case for previous votes. Create a new struct and function in src/vote.rs to retrieve existing votes and use them in places where user.votes was used previously. Remove vote-related code from src/auth.rs and the week number dependence that it required.
This commit is contained in:
parent
1419bb6d51
commit
1b4a934398
7 changed files with 47 additions and 35 deletions
15
src/week.rs
15
src/week.rs
|
@ -7,14 +7,15 @@ use rocket::response::Redirect;
|
|||
use rocket_db_pools::{sqlx, Connection};
|
||||
use rocket_dyn_templates::{context, Template};
|
||||
use sqlx::{Acquire, Executor};
|
||||
use crate::auth;
|
||||
use crate::{auth, vote};
|
||||
use crate::auth::User;
|
||||
use crate::database::Db;
|
||||
use crate::database_records::{DisplayTruth, Player, Truth, Week};
|
||||
use crate::vote::WeeklyUserVotes;
|
||||
|
||||
#[get("/<week_number>")]
|
||||
pub async fn week(week_number: u8, mut db: Connection<Db>, cookies: &CookieJar<'_>) -> Template {
|
||||
let user: User = auth::get_user(week_number, &mut db, cookies).await;
|
||||
let user: User = auth::get_user(&mut db, cookies).await;
|
||||
|
||||
let other_players = if user.logged_in {
|
||||
match sqlx::query_as("SELECT id, name FROM Players WHERE id <> $1 AND is_admin == 0 ORDER BY name")
|
||||
|
@ -41,6 +42,8 @@ pub async fn week(week_number: u8, mut db: Connection<Db>, cookies: &CookieJar<'
|
|||
}
|
||||
};
|
||||
|
||||
let vote_data: WeeklyUserVotes = vote::get_weekly_user_votes(week_number,&user, &mut db).await;
|
||||
|
||||
// FIXME : This is fucking *trash* but fucking hell mate
|
||||
if user.is_admin {
|
||||
let truths: Vec<Truth> = match sqlx::query_as("SELECT * FROM Truths WHERE week == $1 ORDER BY number")
|
||||
|
@ -58,6 +61,7 @@ pub async fn week(week_number: u8, mut db: Connection<Db>, cookies: &CookieJar<'
|
|||
truths: truths,
|
||||
user: user,
|
||||
other_players: other_players,
|
||||
vote_data: vote_data
|
||||
})
|
||||
} else {
|
||||
let truths: Vec<DisplayTruth> = match sqlx::query_as("SELECT id, number, author_id, rendered_text FROM Truths WHERE week == $1 ORDER BY number")
|
||||
|
@ -75,6 +79,7 @@ pub async fn week(week_number: u8, mut db: Connection<Db>, cookies: &CookieJar<'
|
|||
truths: truths,
|
||||
user: user,
|
||||
other_players: other_players,
|
||||
vote_data: vote_data
|
||||
})
|
||||
}
|
||||
}
|
||||
|
@ -82,7 +87,7 @@ pub async fn week(week_number: u8, mut db: Connection<Db>, cookies: &CookieJar<'
|
|||
#[post("/<week>/edit", data="<raw_intro>")]
|
||||
pub async fn update_week(week: u8, raw_intro: Form<String>,
|
||||
mut db: Connection<Db>, cookies: &CookieJar<'_>) -> Redirect {
|
||||
let user = auth::get_user(week, &mut db, cookies).await;
|
||||
let user = auth::get_user(&mut db, cookies).await;
|
||||
if !user.is_admin {
|
||||
cookies.add(("toast_error", "Vous n'avez pas la permission de changer la semaine."));
|
||||
return Redirect::to(uri!(week(week)));
|
||||
|
@ -118,7 +123,7 @@ pub async fn update_week(week: u8, raw_intro: Form<String>,
|
|||
|
||||
#[post("/<week>/set_last")]
|
||||
pub async fn set_last_week(week: u8, mut db: Connection<Db>, cookies: &CookieJar<'_>) -> Redirect {
|
||||
let user = auth::get_user(week, &mut db, cookies).await;
|
||||
let user = auth::get_user(&mut db, cookies).await;
|
||||
if !user.is_admin {
|
||||
cookies.add(("toast_error", "Vous n'avez pas la permission de changer la semaine."));
|
||||
return Redirect::to(uri!(week(week)));
|
||||
|
@ -173,7 +178,7 @@ pub async fn set_last_week(week: u8, mut db: Connection<Db>, cookies: &CookieJar
|
|||
|
||||
#[get("/<week>/create")]
|
||||
pub async fn create_week(week: u8, mut db: Connection<Db>, cookies: &CookieJar<'_>) -> Redirect {
|
||||
let user = auth::get_user(week, &mut db, cookies).await;
|
||||
let user = auth::get_user(&mut db, cookies).await;
|
||||
if !user.is_admin {
|
||||
cookies.add(("toast_error", "Vous n'avez pas la permission de changer la semaine."));
|
||||
return Redirect::to(uri!(week(week - 1)));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue