main: Use labadoor-auth instead of the CSV module directly

This commit is contained in:
George Kaklamanos 2023-11-22 19:44:10 +02:00
parent 2caad2a5ef
commit e7c34865c5
No known key found for this signature in database
GPG key ID: C0CAB8A6BDC9399D
6 changed files with 41 additions and 30 deletions

View file

@ -5,7 +5,10 @@ edition = "2021"
[dependencies]
clap = { version = "4.4.8", features = ["derive"] }
config = "0.13.4"
labadoor-acl = { path = "../labadoor-acl" }
labadoor-csv = { path = "../labadoor-csv", optional = true }
serde = { version = "1.0.193", features = ["derive"] }
[features]
csv = ["dep:labadoor-csv"]

View file

@ -1,4 +1,5 @@
use clap::{Parser, ValueEnum};
use serde::Deserialize;
#[derive(Parser, Debug)]
pub struct Cli {
@ -29,3 +30,11 @@ pub struct Open {
pub fn parse() -> Cli {
Cli::parse()
}
#[cfg(feature = "csv")]
#[derive(Deserialize, Parser, Debug)]
pub struct CSV {
#[clap(short, long)]
#[arg(default_value = "Some(String::from(\"/etc/labadoor\"))")]
pub path: String,
}

View file

@ -1,7 +1,18 @@
pub mod cli;
pub mod to_config;
use labadoor_acl::ACL;
use to_config::ToConfig;
pub fn auth(i: &cli::Cli) {
match i.command {
cli::Command::Open(_) => todo!(),
pub fn auth(i: &cli::Cli, config: config::Config) {
let acl = match &i.backend {
#[cfg(feature = "csv")]
cli::Backend::CSV => config.get::<cli::CSV>("csv").unwrap().to_config().new(),
};
match &i.command {
cli::Command::Open(open) => acl.auth_user(
open.method.clone(),
open.identifier.clone(),
open.resource.clone(),
),
};
}

View file

@ -0,0 +1,14 @@
use crate::cli::*;
pub trait ToConfig<T> {
fn to_config(&self) -> T;
}
#[cfg(feature = "csv")]
impl ToConfig<labadoor_csv::CSVArgs> for CSV {
fn to_config(&self) -> labadoor_csv::CSVArgs {
labadoor_csv::CSVArgs {
path: self.path.clone(),
}
}
}