|
@@ -141,29 +141,41 @@ async fn main() -> std::io::Result<()> {
|
141
|
141
|
}
|
142
|
142
|
});
|
143
|
143
|
|
144
|
|
- app.at("/login").get(|req: tide::Request<()>| async move {
|
145
|
|
- let tera = Tera::new("templates/**/*.html")?;
|
146
|
|
- let mut context = Context::new();
|
147
|
|
- let logged_in: bool = req.session().get("logged_in").unwrap_or(false);
|
148
|
|
- context.insert("logged_in", &logged_in);
|
149
|
|
- let html = tera.render("login.html", &context)?;
|
150
|
|
- Ok(Body::from_string(html))
|
151
|
|
- }).post(|mut req: tide::Request<()>| async move {
|
152
|
|
- let logged_in: bool = req.session().get("logged_in").unwrap_or(false);
|
153
|
|
- if logged_in {
|
154
|
|
- return Ok(tide::Redirect::new("/"));
|
155
|
|
- }
|
|
144
|
+ app.at("/login")
|
|
145
|
+ .get(|mut req: tide::Request<()>| async move {
|
|
146
|
+ let tera = Tera::new("templates/**/*.html")?;
|
|
147
|
+ let mut context = Context::new();
|
|
148
|
+ let logged_in: bool = req.session().get("logged_in").unwrap_or(false);
|
|
149
|
+ context.insert("logged_in", &logged_in);
|
|
150
|
+ match req.session_mut().get::<String>("flash_error") {
|
|
151
|
+ Some(error) => {
|
|
152
|
+ req.session_mut().remove("flash_error");
|
|
153
|
+ &context.insert("error", &error);
|
|
154
|
+ }
|
|
155
|
+ None => {}
|
|
156
|
+ }
|
|
157
|
+ let html = tera.render("login.html", &context)?;
|
|
158
|
+ Ok(Body::from_string(html))
|
|
159
|
+ })
|
|
160
|
+ .post(|mut req: tide::Request<()>| async move {
|
|
161
|
+ let logged_in: bool = req.session().get("logged_in").unwrap_or(false);
|
|
162
|
+ if logged_in {
|
|
163
|
+ return Ok(tide::Redirect::new("/"));
|
|
164
|
+ }
|
156
|
165
|
|
157
|
|
- let username = env::var("ADMIN_USERNAME")?;
|
158
|
|
- let password = env::var("ADMIN_PASSWORD")?;
|
159
|
|
- let user: User = req.body_form().await?;
|
160
|
|
- if user.username == username && user.password == password {
|
161
|
|
- req.session_mut().insert("logged_in", true)?;
|
162
|
|
- Ok(tide::Redirect::new("/"))
|
163
|
|
- } else {
|
164
|
|
- Ok(tide::Redirect::new("/login"))
|
165
|
|
- }
|
166
|
|
- });
|
|
166
|
+ let username = env::var("ADMIN_USERNAME")?;
|
|
167
|
+ let password = env::var("ADMIN_PASSWORD")?;
|
|
168
|
+ let user: User = req.body_form().await?;
|
|
169
|
+ if user.username == username && user.password == password {
|
|
170
|
+ req.session_mut().remove("logged_in");
|
|
171
|
+ req.session_mut().insert("logged_in", true)?;
|
|
172
|
+ Ok(tide::Redirect::new("/"))
|
|
173
|
+ } else {
|
|
174
|
+ req.session_mut().remove("logged_in");
|
|
175
|
+ req.session_mut().insert("flash_error", "Invalid credentials")?;
|
|
176
|
+ Ok(tide::Redirect::new("/login"))
|
|
177
|
+ }
|
|
178
|
+ });
|
167
|
179
|
|
168
|
180
|
app.at("/logout").get(|mut req: tide::Request<()>| async move {
|
169
|
181
|
req.session_mut().remove("logged_in");
|