diff options
Diffstat (limited to 'crates/iam/src/main.rs')
| -rw-r--r-- | crates/iam/src/main.rs | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/crates/iam/src/main.rs b/crates/iam/src/main.rs index 28f4e4c..41e63be 100644 --- a/crates/iam/src/main.rs +++ b/crates/iam/src/main.rs @@ -11,7 +11,6 @@ use api::{ use clap::Parser; use command::dev_oauth2_listen; -use env_logger::Env; use secd::{CredentialType, Secd}; use time::OffsetDateTime; use util::Result; @@ -24,7 +23,7 @@ const ISSUE_TRACKER_LOC: &str = "https://www.github.com/secdiam/iam"; #[tokio::main] async fn main() { - env_logger::init_from_env(Env::default().default_filter_or("debug")); + tracing_subscriber::fmt().init(); match exec().await { Ok(Some(s)) => println!("{}", s), Err(e) => { @@ -116,6 +115,13 @@ async fn create(secd: &Secd, cmd: CreateObject) -> Result<Option<String>> { let credential = secd.create_credential(t, identity_id, expires_at).await?; Some(serde_json::ser::to_string_pretty(&credential)?.to_string()) } + CreateObject::Impersonator { + impersonator_id, + target_id, + } => { + let credential = secd.impersonate(&impersonator_id, &target_id).await?; + Some(serde_json::to_string(&credential)?.to_string()) + } CreateObject::Validation { method, identity_id, @@ -167,9 +173,11 @@ async fn get(secd: &Secd, cmd: GetObject) -> Result<Option<String>> { key: username, value: passphrase, }, - ValidateObject::Session { token } => { - CredentialType::session_from_str(&token).expect("failed to build session") - } + ValidateObject::Session { token } => CredentialType::session_from_str(&token) + .expect( + "failed to 23 +build session", + ), }); Some( @@ -204,21 +212,21 @@ async fn update(secd: &Secd, cmd: UpdateObject) -> Result<Option<String>> { async fn validate(secd: &Secd, cmd: ValidateObject) -> Result<Option<String>> { let credential = match cmd { ValidateObject::ApiToken { token } => { - secd.validate_credential(CredentialType::api_token_from_str(&token)?) + secd.validate_credential(&CredentialType::api_token_from_str(&token)?) .await? } ValidateObject::Passphrase { username, passphrase, } => { - secd.validate_credential(CredentialType::Passphrase { + secd.validate_credential(&CredentialType::Passphrase { key: username, value: passphrase, }) .await? } ValidateObject::Session { token } => { - secd.validate_credential(CredentialType::session_from_str(&token)?) + secd.validate_credential(&CredentialType::session_from_str(&token)?) .await? } }; |
