feat(main): Initialise RequireLogin middleware on launch

This commit is contained in:
Vincent Ambo 2018-04-09 09:11:25 +02:00
parent ef5e8ec8bd
commit 64453ec683

View file

@ -18,14 +18,14 @@ extern crate actix_web;
extern crate chrono; extern crate chrono;
extern crate env_logger; extern crate env_logger;
extern crate futures; extern crate futures;
extern crate hyper;
extern crate r2d2; extern crate r2d2;
extern crate rand; extern crate rand;
extern crate reqwest; extern crate reqwest;
extern crate serde; extern crate serde;
extern crate serde_json;
extern crate url; extern crate url;
extern crate url_serde; extern crate url_serde;
extern crate serde_json;
extern crate hyper;
pub mod oidc; pub mod oidc;
pub mod db; pub mod db;
@ -36,7 +36,7 @@ pub mod schema;
use actix::prelude::*; use actix::prelude::*;
use actix_web::*; use actix_web::*;
use actix_web::middleware::{Logger, SessionStorage, CookieSessionBackend}; use actix_web::middleware::{Logger, SessionStorage, CookieSessionBackendBuilder};
use actix_web::http::Method; use actix_web::http::Method;
use db::*; use db::*;
use diesel::pg::PgConnection; use diesel::pg::PgConnection;
@ -71,6 +71,7 @@ fn main() {
let oidc_url = config("OIDC_DISCOVERY_URL"); let oidc_url = config("OIDC_DISCOVERY_URL");
let oidc_config = oidc::load_oidc(&oidc_url) let oidc_config = oidc::load_oidc(&oidc_url)
.expect("Failed to retrieve OIDC discovery document"); .expect("Failed to retrieve OIDC discovery document");
let base_url = config("BASE_URL");
let oidc = oidc::OidcExecutor { let oidc = oidc::OidcExecutor {
oidc_config, oidc_config,
@ -101,10 +102,16 @@ fn main() {
tera, tera,
}; };
let sessions = SessionStorage::new(
CookieSessionBackendBuilder::new(&key)
.secure(base_url.starts_with("https"))
.finish());
App::with_state(state) App::with_state(state)
.middleware(Logger::default()) .middleware(Logger::default())
// TODO: Configure session backend with more secure settings. // TODO: Configure session backend with more secure settings.
.middleware(SessionStorage::new(CookieSessionBackend::new(key))) .middleware(sessions)
.middleware(RequireLogin)
.resource("/", |r| r.method(Method::GET).with(forum_index)) .resource("/", |r| r.method(Method::GET).with(forum_index))
.resource("/thread/submit", |r| r.method(Method::POST).with2(submit_thread)) .resource("/thread/submit", |r| r.method(Method::POST).with2(submit_thread))
.resource("/thread/reply", |r| r.method(Method::POST).with2(reply_thread)) .resource("/thread/reply", |r| r.method(Method::POST).with2(reply_thread))