use rocket config to (en|dis)able auth

This commit is contained in:
glyph 2021-11-25 11:12:50 +02:00
parent c2b785f54b
commit 35ff408365
2 changed files with 18 additions and 13 deletions

View File

@ -1,5 +1,7 @@
[development] [development]
template_dir = "templates/" template_dir = "templates/"
disable_auth = true
[production] [production]
template_dir = "templates/" template_dir = "templates/"
disable_auth = false

View File

@ -1,12 +1,13 @@
use std::env;
use log::info; use log::info;
use rocket::form::{Form, FromForm}; use rocket::form::{Form, FromForm};
use rocket::request::FlashMessage; use rocket::http::{Cookie, CookieJar, Status};
use rocket::request::{self, FlashMessage, FromRequest, Request};
use rocket::response::{Flash, Redirect}; use rocket::response::{Flash, Redirect};
use rocket::serde::json::Json; use rocket::serde::{
use rocket::serde::{Deserialize, Serialize}; json::{Json, Value},
use rocket::{get, post}; Deserialize, Serialize,
};
use rocket::{get, post, Config};
use rocket_dyn_templates::Template; use rocket_dyn_templates::Template;
use peach_lib::error::PeachError; use peach_lib::error::PeachError;
@ -14,9 +15,6 @@ use peach_lib::password_utils;
use crate::error::PeachWebError; use crate::error::PeachWebError;
use crate::utils::{build_json_response, TemplateOrRedirect}; use crate::utils::{build_json_response, TemplateOrRedirect};
use rocket::http::{Cookie, CookieJar, Status};
use rocket::request::{self, FromRequest, Request};
use rocket::serde::json::Value;
// HELPERS AND STRUCTS FOR AUTHENTICATION WITH COOKIES // HELPERS AND STRUCTS FOR AUTHENTICATION WITH COOKIES
@ -44,10 +42,15 @@ impl<'r> FromRequest<'r> for Authenticated {
type Error = LoginError; type Error = LoginError;
async fn from_request(req: &'r Request<'_>) -> request::Outcome<Self, Self::Error> { async fn from_request(req: &'r Request<'_>) -> request::Outcome<Self, Self::Error> {
// check for disable auth env var; set to false if unset // check for `disable_auth` config value; set to `false` if unset
let authentication_is_disabled = // can be set via the `ROCKET_DISABLE_AUTH` environment variable
env::var("DISABLE_ROCKET_AUTH").unwrap_or_else(|_| "false".to_string()); // - env var, if set, takes precedence over value defined in `Rocket.toml`
if authentication_is_disabled == "true" { let authentication_is_disabled: bool = match Config::figment().find_value("disable_auth") {
// deserialize the boolean value; set to `false` if an error is encountered
Ok(value) => value.deserialize().unwrap_or(false),
Err(_) => false,
};
if authentication_is_disabled {
let auth = Authenticated {}; let auth = Authenticated {};
request::Outcome::Success(auth) request::Outcome::Success(auth)
} else { } else {