cleanup
This commit is contained in:
parent
c4d44c68a0
commit
c67fcc6fa3
7 changed files with 37 additions and 15 deletions
|
@ -59,7 +59,6 @@ ORDER BY
|
|||
}
|
||||
|
||||
pub fn for_mac(macaddr: &'q str) -> QueryAs<'q, Self> {
|
||||
dbg!(&macaddr);
|
||||
sqlx::query_as(
|
||||
"
|
||||
SELECT DISTINCT
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
use crate::db;
|
||||
use crate::middleware::ForwardAuthInfo;
|
||||
use crate::Level;
|
||||
use crate::Message;
|
||||
use crate::USER;
|
||||
use serde::Deserialize;
|
||||
use std::convert::TryFrom;
|
||||
|
||||
|
@ -31,6 +31,8 @@ impl ChangeForm {
|
|||
}
|
||||
|
||||
pub async fn register(self, request: &crate::Request) -> Message {
|
||||
let forward_auth: &ForwardAuthInfo = request.ext().unwrap();
|
||||
let nickname = forward_auth.nickname.clone();
|
||||
let privacy = match db::PrivacyLevel::try_from(self.privacy) {
|
||||
Ok(privacy) => privacy,
|
||||
Err(_) => return (Level::Error, "unable to parse privacy level".to_string()),
|
||||
|
@ -38,7 +40,7 @@ impl ChangeForm {
|
|||
let dbresult = db::Device {
|
||||
id: None,
|
||||
macaddr: self.macaddr,
|
||||
nickname: USER.to_string(),
|
||||
nickname: nickname.clone(),
|
||||
descr: self.descr.clone(),
|
||||
privacy,
|
||||
present: false,
|
||||
|
@ -51,7 +53,7 @@ impl ChangeForm {
|
|||
return match dbresult {
|
||||
Ok(_) => (
|
||||
Level::Info,
|
||||
format!("assinged device \"{}\" to {}", self.descr, USER),
|
||||
format!("assinged device \"{}\" to {}", &self.descr, &nickname),
|
||||
),
|
||||
Err(_) => (Level::Error, "unable to create device".to_string()),
|
||||
};
|
||||
|
|
|
@ -10,8 +10,6 @@ mod routes;
|
|||
mod session;
|
||||
mod templates;
|
||||
|
||||
pub const USER: &str = "hansi";
|
||||
|
||||
/// Configuration
|
||||
#[derive(FromArgs, Debug)]
|
||||
struct Config {
|
||||
|
@ -77,6 +75,7 @@ async fn main() -> Result<(), io::Error> {
|
|||
|
||||
let mut app = tide::with_state(State { pool });
|
||||
app.with(middleware::ErrorHandler::default());
|
||||
app.with(middleware::ForwardAuth::default());
|
||||
app.with(session_store);
|
||||
app.at("/").get(routes::index);
|
||||
app.at("/change").post(routes::change);
|
||||
|
|
|
@ -21,3 +21,23 @@ impl Middleware<State> for ErrorHandler {
|
|||
"ErrorHandler"
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct ForwardAuth {}
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct ForwardAuthInfo {
|
||||
pub nickname: String,
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl Middleware<State> for ForwardAuth {
|
||||
async fn handle(&self, mut request: Request, next: Next<'_, State>) -> Result {
|
||||
let mut nickname = "Anonymous".to_string();
|
||||
if let Some(cookie) = request.cookie("_forward_auth_name") {
|
||||
nickname = cookie.value().to_string();
|
||||
}
|
||||
request.set_ext(ForwardAuthInfo { nickname });
|
||||
Ok(next.run(request).await)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
use crate::db;
|
||||
use crate::forms::ChangeForm;
|
||||
use crate::middleware::ForwardAuthInfo;
|
||||
use crate::session::Session;
|
||||
use crate::templates::IndexTemplate;
|
||||
use crate::USER;
|
||||
use tide::Redirect;
|
||||
|
||||
pub async fn healthz(_request: crate::Request) -> tide::Result {
|
||||
|
@ -10,16 +10,16 @@ pub async fn healthz(_request: crate::Request) -> tide::Result {
|
|||
}
|
||||
|
||||
pub async fn index(mut request: crate::Request) -> tide::Result {
|
||||
let my = db::Device::for_user(USER)
|
||||
let forward_auth: &ForwardAuthInfo = request.ext().unwrap();
|
||||
let nickname = forward_auth.nickname.clone();
|
||||
let my = db::Device::for_user(&nickname)
|
||||
.fetch_all(&request.state().pool)
|
||||
.await
|
||||
.map_err(|err| dbg!(err))?;
|
||||
.await?;
|
||||
let unassinged = db::AliveDevice::unassinged()
|
||||
.fetch_all(&request.state().pool)
|
||||
.await
|
||||
.map_err(|err| dbg!(err))?;
|
||||
.await?;
|
||||
let messages = Session::from(&mut request).pop_messages();
|
||||
Ok(IndexTemplate::new(my, unassinged, messages).into())
|
||||
Ok(IndexTemplate::new(nickname, my, unassinged, messages).into())
|
||||
}
|
||||
|
||||
pub async fn change(mut request: crate::Request) -> tide::Result {
|
||||
|
|
|
@ -5,6 +5,7 @@ use askama::Template;
|
|||
#[derive(Template, Default)]
|
||||
#[template(path = "index.html")]
|
||||
pub struct IndexTemplate {
|
||||
nickname: String,
|
||||
my: Vec<db::Device>,
|
||||
unassinged: Vec<db::AliveDevice>,
|
||||
messages: Vec<Message>,
|
||||
|
@ -12,11 +13,13 @@ pub struct IndexTemplate {
|
|||
|
||||
impl IndexTemplate {
|
||||
pub fn new(
|
||||
nickname: String,
|
||||
my: Vec<db::Device>,
|
||||
unassinged: Vec<db::AliveDevice>,
|
||||
messages: Vec<Message>,
|
||||
) -> Self {
|
||||
Self {
|
||||
nickname,
|
||||
my,
|
||||
unassinged,
|
||||
messages,
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
<meta charset="utf-8">
|
||||
|
||||
<title>macnickenson</title>
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
@ -18,7 +17,7 @@
|
|||
{% endfor %}
|
||||
|
||||
<div class="mt-5">
|
||||
<h2>Your Devices:</h2>
|
||||
<h2>Your ({{ nickname }}) Devices:</h2>
|
||||
<table class="table">
|
||||
<thead><tr>
|
||||
<th scope="col">Mac-Address</th>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue