Can disable auth

This commit is contained in:
Pierre HUBERT 2023-09-08 09:04:48 +02:00
parent 57c023b45b
commit bd5ea1fb23
6 changed files with 15 additions and 3 deletions

View File

@ -33,6 +33,11 @@ pub struct AppConfig {
#[arg(long, env, default_value = "admin")] #[arg(long, env, default_value = "admin")]
pub auth_password: String, pub auth_password: String,
/// Disable authentication WARNING! THIS IS UNSECURE, it was designed only for development
/// purpose, it should NEVER be used in production
#[arg(long, env)]
pub unsecure_disable_auth: bool,
/// Disable local auth /// Disable local auth
#[arg(long, env)] #[arg(long, env)]
pub disable_local_auth: bool, pub disable_local_auth: bool,

View File

@ -124,7 +124,7 @@ struct CurrentUser {
/// Get current authenticated user /// Get current authenticated user
pub async fn current_user(auth: AuthExtractor) -> impl Responder { pub async fn current_user(auth: AuthExtractor) -> impl Responder {
HttpResponse::Ok().json(CurrentUser { HttpResponse::Ok().json(CurrentUser {
id: auth.id().unwrap(), id: auth.id().unwrap_or_else(|| "Anonymous".to_string()),
}) })
} }

View File

@ -11,6 +11,7 @@ pub async fn root_index() -> impl Responder {
#[derive(serde::Serialize)] #[derive(serde::Serialize)]
struct StaticConfig { struct StaticConfig {
auth_disabled: bool,
local_auth_enabled: bool, local_auth_enabled: bool,
oidc_auth_enabled: bool, oidc_auth_enabled: bool,
iso_mimetypes: &'static [&'static str], iso_mimetypes: &'static [&'static str],
@ -19,6 +20,7 @@ struct StaticConfig {
pub async fn static_config(local_auth: LocalAuthEnabled) -> impl Responder { pub async fn static_config(local_auth: LocalAuthEnabled) -> impl Responder {
HttpResponse::Ok().json(StaticConfig { HttpResponse::Ok().json(StaticConfig {
auth_disabled: AppConfig::get().unsecure_disable_auth,
local_auth_enabled: *local_auth, local_auth_enabled: *local_auth,
oidc_auth_enabled: !AppConfig::get().disable_oidc, oidc_auth_enabled: !AppConfig::get().disable_oidc,
iso_mimetypes: &constants::ALLOWED_ISO_MIME_TYPES, iso_mimetypes: &constants::ALLOWED_ISO_MIME_TYPES,

View File

@ -1,6 +1,7 @@
use std::future::{ready, Ready}; use std::future::{ready, Ready};
use std::rc::Rc; use std::rc::Rc;
use crate::app_config::AppConfig;
use crate::constants; use crate::constants;
use crate::extractors::auth_extractor::AuthExtractor; use crate::extractors::auth_extractor::AuthExtractor;
use actix_web::body::EitherBody; use actix_web::body::EitherBody;
@ -60,8 +61,10 @@ where
let service = Rc::clone(&self.service); let service = Rc::clone(&self.service);
Box::pin(async move { Box::pin(async move {
let auth_disabled = AppConfig::get().unsecure_disable_auth;
// Check authentication, if required // Check authentication, if required
if !constants::ROUTES_WITHOUT_AUTH.contains(&req.path()) { if !auth_disabled && !constants::ROUTES_WITHOUT_AUTH.contains(&req.path()) {
let auth = match AuthExtractor::from_request(req.request(), &mut Payload::None) let auth = match AuthExtractor::from_request(req.request(), &mut Payload::None)
.into_inner() .into_inner()
{ {

View File

@ -13,6 +13,7 @@ import { BaseAuthenticatedPage } from "./widgets/BaseAuthenticatedPage";
import { LoginRoute } from "./routes/auth/LoginRoute"; import { LoginRoute } from "./routes/auth/LoginRoute";
import { AuthApi } from "./api/AuthApi"; import { AuthApi } from "./api/AuthApi";
import { IsoFilesRoute } from "./routes/IsoFilesRoute"; import { IsoFilesRoute } from "./routes/IsoFilesRoute";
import { ServerApi } from "./api/ServerApi";
interface AuthContext { interface AuthContext {
signedIn: boolean; signedIn: boolean;
@ -31,7 +32,7 @@ export function App() {
const router = createBrowserRouter( const router = createBrowserRouter(
createRoutesFromElements( createRoutesFromElements(
signedIn ? ( signedIn || ServerApi.Config.auth_disabled ? (
<Route path="*" element={<BaseAuthenticatedPage />}> <Route path="*" element={<BaseAuthenticatedPage />}>
<Route path="iso" element={<IsoFilesRoute />} /> <Route path="iso" element={<IsoFilesRoute />} />
<Route path="*" element={<NotFoundRoute />} /> <Route path="*" element={<NotFoundRoute />} />

View File

@ -1,6 +1,7 @@
import { APIClient } from "./ApiClient"; import { APIClient } from "./ApiClient";
export interface ServerConfig { export interface ServerConfig {
auth_disabled: boolean;
local_auth_enabled: boolean; local_auth_enabled: boolean;
oidc_auth_enabled: boolean; oidc_auth_enabled: boolean;
iso_mimetypes: string[]; iso_mimetypes: string[];