about summary refs log tree commit diff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/main.rs b/src/main.rs
index eeab96e83ced..8188d498712d 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -112,6 +112,8 @@ fn main() {
         key_bytes
     };
 
+    let require_login = config_default("REQUIRE_LOGIN", "true".into()) == "true";
+
     server::new(move || {
         let state = AppState {
             db: db_addr.clone(),
@@ -123,17 +125,22 @@ fn main() {
             CookieSessionBackend::signed(&key)
                 .secure(base_url.starts_with("https")));
 
-        App::with_state(state)
+        let app = App::with_state(state)
             .middleware(Logger::default())
             .middleware(sessions)
-            .middleware(RequireLogin)
             .resource("/", |r| r.method(Method::GET).with(forum_index))
             .resource("/thread/new", |r| r.method(Method::GET).with(new_thread))
             .resource("/thread/submit", |r| r.method(Method::POST).with3(submit_thread))
             .resource("/thread/reply", |r| r.method(Method::POST).with3(reply_thread))
             .resource("/thread/{id}", |r| r.method(Method::GET).with2(forum_thread))
             .resource("/oidc/login", |r| r.method(Method::GET).with(login))
-            .resource("/oidc/callback", |r| r.method(Method::POST).with3(callback))})
+            .resource("/oidc/callback", |r| r.method(Method::POST).with3(callback));
+
+        if require_login {
+            app.middleware(RequireLogin)
+        } else {
+            app
+        }})
         .bind(&bind_host).expect(&format!("Could not bind on '{}'", bind_host))
         .start();