aboutsummaryrefslogtreecommitdiff
path: root/server/src/routes/ui/layout.rs
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/routes/ui/layout.rs')
-rw-r--r--server/src/routes/ui/layout.rs24
1 files changed, 16 insertions, 8 deletions
diff --git a/server/src/routes/ui/layout.rs b/server/src/routes/ui/layout.rs
index c25e644..614aa66 100644
--- a/server/src/routes/ui/layout.rs
+++ b/server/src/routes/ui/layout.rs
@@ -1,15 +1,19 @@
-use super::{account::session::Session, Defer, HtmlTemplate};
-use crate::{uri, CONF};
+use super::account::session::Session;
+use crate::{
+ routes::ui::account::{
+ rocket_uri_macro_r_account_login, rocket_uri_macro_r_account_logout,
+ rocket_uri_macro_r_account_register,
+ },
+ uri, CONF,
+};
use async_std::task::block_on;
use markup::Render;
use rocket::{
http::ContentType,
- request::{FromRequest, Outcome},
response::{self, Responder},
Request, Response,
};
-use std::{convert::Infallible, io::Cursor};
-use tokio::runtime::Handle;
+use std::io::Cursor;
markup::define! {
Layout<Main: Render>(title: String, main: Main, session: Option<Session>) {
@@ -27,10 +31,11 @@ markup::define! {
div.account {
@if let Some(session) = session {
-
+ span { "Logged in as " @session.user.display_name }
+ a[href=uri!(r_account_logout())] { "Log out" }
} else {
- // a[href=uri!(r_account_register())] { "Register" }
- // a[href=uri!(r_account_login())] { "Log in" }
+ a[href=uri!(r_account_register())] { "Register" }
+ a[href=uri!(r_account_login())] { "Log in" }
}
}
}
@@ -49,6 +54,9 @@ pub struct LayoutPage<T> {
impl<'r, Main: Render> Responder<'r, 'static> for LayoutPage<Main> {
fn respond_to(self, req: &'r Request<'_>) -> response::Result<'static> {
+ // TODO blocking the event loop here. it seems like there is no other way to
+ // TODO offload this, since the guard references `req` which has a lifetime.
+ // TODO therefore we just block. that is fine since the database is somewhat fast.
let session = block_on(req.guard::<Option<Session>>()).unwrap();
let mut out = String::new();
Layout {