FabulaVotes/src/main.rs
trotFunky c4e252dbc2 auth: Add a logout button
Add a logout button that clears the auth cookies, logging out the user.
It also tries to remove the auth token from the databse, but will ignore
any error during the database operation.

Do some include clean-ups as well.
2024-07-26 20:32:16 +01:00

48 lines
No EOL
1.2 KiB
Rust

#[macro_use] extern crate rocket;
use rocket::fs::{FileServer, relative};
use rocket::response::Redirect;
use rocket_dyn_templates::Template;
use rocket_db_pools::{sqlx, sqlx::Row, Connection};
mod auth;
mod truth;
mod vote;
mod week;
mod database;
mod database_records;
use database::Db;
#[get("/")]
async fn index(mut db: Connection<Db>) -> Redirect {
let current_week: u8 = match sqlx::query("SELECT number FROM Weeks WHERE is_last_week == 1;")
.fetch_one(&mut **db).await {
Ok(v) => v.try_get(0).ok().unwrap_or_else(|| 1), // If error, go back to 1
Err(error) => {
error!("Error while getting current week : {error:?}");
1
}
};
Redirect::to(uri!(week::week(week_number = if current_week == 0 {1} else {current_week})))
}
#[launch]
fn rocket() -> _ {
rocket::build()
.mount("/", FileServer::from(relative!("static_files")))
.mount("/", routes![index,
vote::fetch_vote_data, vote::vote,
truth::create_truth, truth::edit_truth,
week::week, week::update_week, week::set_last_week, week::create_week,
auth::login, auth::logout])
.attach(database::stage())
.attach(Template::fairing())
}
// TODO: Random Row ID