From 18b4b7549fc27e63f9f887dc5aba21ec337a9aaf Mon Sep 17 00:00:00 2001 From: James Hodgkinson Date: Fri, 27 Oct 2023 14:00:37 +1000 Subject: [PATCH] service-account or person validity show returns for non-existing identity (#2258) Fixes #2152 --- tools/cli/src/cli/person.rs | 47 +++++++++++++------------ tools/cli/src/cli/serviceaccount.rs | 53 +++++++++++++---------------- 2 files changed, 46 insertions(+), 54 deletions(-) diff --git a/tools/cli/src/cli/person.rs b/tools/cli/src/cli/person.rs index 9a37abc57..7d29fcd6d 100644 --- a/tools/cli/src/cli/person.rs +++ b/tools/cli/src/cli/person.rs @@ -352,30 +352,29 @@ impl PersonOpt { AccountValidity::Show(ano) => { let client = ano.copt.to_client(OpType::Read).await; + let entry = match client + .idm_person_account_get(ano.aopts.account_id.as_str()) + .await + { + Err(err) => { + error!( + "No account {} found, or other error occurred: {:?}", + ano.aopts.account_id.as_str(), + err + ); + return; + } + Ok(val) => match val { + Some(val) => val, + None => { + error!("No account {} found!", ano.aopts.account_id.as_str()); + return; + } + }, + }; + println!("user: {}", ano.aopts.account_id.as_str()); - let ex = match client - .idm_person_account_get_attr( - ano.aopts.account_id.as_str(), - ATTR_ACCOUNT_EXPIRE, - ) - .await - { - Ok(v) => v, - Err(e) => return handle_client_error(e, &ano.copt.output_mode), - }; - - let vf = match client - .idm_person_account_get_attr( - ano.aopts.account_id.as_str(), - ATTR_ACCOUNT_VALID_FROM, - ) - .await - { - Ok(v) => v, - Err(e) => return handle_client_error(e, &ano.copt.output_mode), - }; - - if let Some(t) = vf { + if let Some(t) = entry.attrs.get(ATTR_ACCOUNT_VALID_FROM) { // Convert the time to local timezone. let t = OffsetDateTime::parse(&t[0], &Rfc3339) .map(|odt| { @@ -393,7 +392,7 @@ impl PersonOpt { println!("valid after: any time"); } - if let Some(t) = ex { + if let Some(t) = entry.attrs.get(ATTR_ACCOUNT_EXPIRE) { let t = OffsetDateTime::parse(&t[0], &Rfc3339) .map(|odt| { odt.to_offset( diff --git a/tools/cli/src/cli/serviceaccount.rs b/tools/cli/src/cli/serviceaccount.rs index 782397ef5..a12bc31f8 100644 --- a/tools/cli/src/cli/serviceaccount.rs +++ b/tools/cli/src/cli/serviceaccount.rs @@ -365,36 +365,29 @@ impl ServiceAccountOpt { AccountValidity::Show(ano) => { let client = ano.copt.to_client(OpType::Read).await; + let entry = match client + .idm_service_account_get(ano.aopts.account_id.as_str()) + .await + { + Err(err) => { + error!( + "No account {} found, or other error occurred: {:?}", + ano.aopts.account_id.as_str(), + err + ); + return; + } + Ok(val) => match val { + Some(val) => val, + None => { + error!("No account {} found!", ano.aopts.account_id.as_str()); + return; + } + }, + }; + println!("user: {}", ano.aopts.account_id.as_str()); - let ex = match client - .idm_service_account_get_attr( - ano.aopts.account_id.as_str(), - ATTR_ACCOUNT_EXPIRE, - ) - .await - { - Ok(v) => v, - Err(e) => { - error!("Error -> {:?}", e); - return; - } - }; - - let vf = match client - .idm_service_account_get_attr( - ano.aopts.account_id.as_str(), - ATTR_ACCOUNT_VALID_FROM, - ) - .await - { - Ok(v) => v, - Err(e) => { - error!("Error -> {:?}", e); - return; - } - }; - - if let Some(t) = vf { + if let Some(t) = entry.attrs.get(ATTR_ACCOUNT_VALID_FROM) { // Convert the time to local timezone. let t = OffsetDateTime::parse(&t[0], &Rfc3339) .map(|odt| { @@ -412,7 +405,7 @@ impl ServiceAccountOpt { println!("valid after: any time"); } - if let Some(t) = ex { + if let Some(t) = entry.attrs.get(ATTR_ACCOUNT_EXPIRE) { let t = OffsetDateTime::parse(&t[0], &Rfc3339) .map(|odt| { odt.to_offset(