Fix token_has_all_scopes for yup-oauth2 v8 array format

yup-oauth2 v8 stores tokens as a JSON array of entries, each
with a 'scopes' array field. Updated the parser to iterate
over entries and check for matching scopes.
This commit is contained in:
Ruben Rosario
2026-06-21 17:35:31 +01:00
parent 320a1823f3
commit 822c335864
+15 -6
View File
@@ -78,15 +78,24 @@ impl ApiClient {
Ok(c) => c,
Err(_) => return false,
};
let value: serde_json::Value = match serde_json::from_str(&content) {
let entries: Vec<serde_json::Value> = match serde_json::from_str(&content) {
Ok(v) => v,
Err(_) => return false,
};
let scope = match value["scope"].as_str() {
Some(s) => s,
None => return false,
};
SCOPES.iter().all(|s| scope.contains(s))
for entry in &entries {
let scopes = match entry["scopes"].as_array() {
Some(s) => s,
None => continue,
};
let has_all: Vec<&str> = scopes
.iter()
.filter_map(|s| s.as_str())
.collect();
if SCOPES.iter().all(|s| has_all.contains(s)) {
return true;
}
}
false
}
pub async fn start_and_wait_for_auth(&self) -> Result<(), ApiError> {