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> {
|
pub fn for_mac(macaddr: &'q str) -> QueryAs<'q, Self> {
|
||||||
dbg!(&macaddr);
|
|
||||||
sqlx::query_as(
|
sqlx::query_as(
|
||||||
"
|
"
|
||||||
SELECT DISTINCT
|
SELECT DISTINCT
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use crate::db;
|
use crate::db;
|
||||||
|
use crate::middleware::ForwardAuthInfo;
|
||||||
use crate::Level;
|
use crate::Level;
|
||||||
use crate::Message;
|
use crate::Message;
|
||||||
use crate::USER;
|
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use std::convert::TryFrom;
|
use std::convert::TryFrom;
|
||||||
|
|
||||||
|
@ -31,6 +31,8 @@ impl ChangeForm {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn register(self, request: &crate::Request) -> Message {
|
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) {
|
let privacy = match db::PrivacyLevel::try_from(self.privacy) {
|
||||||
Ok(privacy) => privacy,
|
Ok(privacy) => privacy,
|
||||||
Err(_) => return (Level::Error, "unable to parse privacy level".to_string()),
|
Err(_) => return (Level::Error, "unable to parse privacy level".to_string()),
|
||||||
|
@ -38,7 +40,7 @@ impl ChangeForm {
|
||||||
let dbresult = db::Device {
|
let dbresult = db::Device {
|
||||||
id: None,
|
id: None,
|
||||||
macaddr: self.macaddr,
|
macaddr: self.macaddr,
|
||||||
nickname: USER.to_string(),
|
nickname: nickname.clone(),
|
||||||
descr: self.descr.clone(),
|
descr: self.descr.clone(),
|
||||||
privacy,
|
privacy,
|
||||||
present: false,
|
present: false,
|
||||||
|
@ -51,7 +53,7 @@ impl ChangeForm {
|
||||||
return match dbresult {
|
return match dbresult {
|
||||||
Ok(_) => (
|
Ok(_) => (
|
||||||
Level::Info,
|
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()),
|
Err(_) => (Level::Error, "unable to create device".to_string()),
|
||||||
};
|
};
|
||||||
|
|
|
@ -10,8 +10,6 @@ mod routes;
|
||||||
mod session;
|
mod session;
|
||||||
mod templates;
|
mod templates;
|
||||||
|
|
||||||
pub const USER: &str = "hansi";
|
|
||||||
|
|
||||||
/// Configuration
|
/// Configuration
|
||||||
#[derive(FromArgs, Debug)]
|
#[derive(FromArgs, Debug)]
|
||||||
struct Config {
|
struct Config {
|
||||||
|
@ -77,6 +75,7 @@ async fn main() -> Result<(), io::Error> {
|
||||||
|
|
||||||
let mut app = tide::with_state(State { pool });
|
let mut app = tide::with_state(State { pool });
|
||||||
app.with(middleware::ErrorHandler::default());
|
app.with(middleware::ErrorHandler::default());
|
||||||
|
app.with(middleware::ForwardAuth::default());
|
||||||
app.with(session_store);
|
app.with(session_store);
|
||||||
app.at("/").get(routes::index);
|
app.at("/").get(routes::index);
|
||||||
app.at("/change").post(routes::change);
|
app.at("/change").post(routes::change);
|
||||||
|
|
|
@ -21,3 +21,23 @@ impl Middleware<State> for ErrorHandler {
|
||||||
"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::db;
|
||||||
use crate::forms::ChangeForm;
|
use crate::forms::ChangeForm;
|
||||||
|
use crate::middleware::ForwardAuthInfo;
|
||||||
use crate::session::Session;
|
use crate::session::Session;
|
||||||
use crate::templates::IndexTemplate;
|
use crate::templates::IndexTemplate;
|
||||||
use crate::USER;
|
|
||||||
use tide::Redirect;
|
use tide::Redirect;
|
||||||
|
|
||||||
pub async fn healthz(_request: crate::Request) -> tide::Result {
|
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 {
|
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)
|
.fetch_all(&request.state().pool)
|
||||||
.await
|
.await?;
|
||||||
.map_err(|err| dbg!(err))?;
|
|
||||||
let unassinged = db::AliveDevice::unassinged()
|
let unassinged = db::AliveDevice::unassinged()
|
||||||
.fetch_all(&request.state().pool)
|
.fetch_all(&request.state().pool)
|
||||||
.await
|
.await?;
|
||||||
.map_err(|err| dbg!(err))?;
|
|
||||||
let messages = Session::from(&mut request).pop_messages();
|
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 {
|
pub async fn change(mut request: crate::Request) -> tide::Result {
|
||||||
|
|
|
@ -5,6 +5,7 @@ use askama::Template;
|
||||||
#[derive(Template, Default)]
|
#[derive(Template, Default)]
|
||||||
#[template(path = "index.html")]
|
#[template(path = "index.html")]
|
||||||
pub struct IndexTemplate {
|
pub struct IndexTemplate {
|
||||||
|
nickname: String,
|
||||||
my: Vec<db::Device>,
|
my: Vec<db::Device>,
|
||||||
unassinged: Vec<db::AliveDevice>,
|
unassinged: Vec<db::AliveDevice>,
|
||||||
messages: Vec<Message>,
|
messages: Vec<Message>,
|
||||||
|
@ -12,11 +13,13 @@ pub struct IndexTemplate {
|
||||||
|
|
||||||
impl IndexTemplate {
|
impl IndexTemplate {
|
||||||
pub fn new(
|
pub fn new(
|
||||||
|
nickname: String,
|
||||||
my: Vec<db::Device>,
|
my: Vec<db::Device>,
|
||||||
unassinged: Vec<db::AliveDevice>,
|
unassinged: Vec<db::AliveDevice>,
|
||||||
messages: Vec<Message>,
|
messages: Vec<Message>,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
Self {
|
Self {
|
||||||
|
nickname,
|
||||||
my,
|
my,
|
||||||
unassinged,
|
unassinged,
|
||||||
messages,
|
messages,
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
|
|
||||||
<title>macnickenson</title>
|
<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>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
@ -18,7 +17,7 @@
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
<div class="mt-5">
|
<div class="mt-5">
|
||||||
<h2>Your Devices:</h2>
|
<h2>Your ({{ nickname }}) Devices:</h2>
|
||||||
<table class="table">
|
<table class="table">
|
||||||
<thead><tr>
|
<thead><tr>
|
||||||
<th scope="col">Mac-Address</th>
|
<th scope="col">Mac-Address</th>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue