mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-04 17:38:10 +00:00
script to extract accesss token
This commit is contained in:
1 parent
7c79cd8121
commit
dbd480b0f4
3 files changed
+79
-4
No files matched your search
@@ -1,4 +1,27 @@
|
||||
|
||||
/*
|
||||
|
||||
This is issued by Google, even for email+password login:
|
||||
|
||||
https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key={ENTROPY}
|
||||
|
||||
Value:
|
||||
|
||||
{
|
||||
"kind": "identitytoolkit#VerifyPasswordResponse",
|
||||
"localId": "{{WorldLabsUserId}}",
|
||||
"email": "{{email@whatever.com}}",
|
||||
"displayName": "",
|
||||
"idToken": "{{BEARER_TOKEN}}",
|
||||
"registered": true,
|
||||
"refreshToken": "{{REFRESH_TOKEN}}",
|
||||
"expiresIn": "3600"
|
||||
}
|
||||
|
||||
|
||||
|
||||
*/
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct WorldLabsBearerToken {
|
||||
/// The bearer token
|
||||
|
||||
+3
-3
@@ -42,10 +42,10 @@ impl WorldlabsCredentialManager {
|
||||
let maybe_browser_cookies = state.user_cookies
|
||||
.as_ref()
|
||||
.map(|cookies| cookies.to_cookie_store());
|
||||
|
||||
|
||||
let maybe_bearer = state.bearer_token
|
||||
.map(|bearer| WorldLabsBearerToken::new(bearer));
|
||||
|
||||
|
||||
let maybe_cookies = maybe_browser_cookies
|
||||
.as_ref()
|
||||
.map(|cookies| cookies.to_cookie_string())
|
||||
@@ -188,7 +188,7 @@ impl WorldlabsCredentialManager {
|
||||
// TODO: This is just for building the client and testing.
|
||||
if let Some(cookies) = creds.browser_cookies.as_ref() {
|
||||
let cookies_header = cookies.to_cookie_string();
|
||||
let path = self.app_data_root.credentials_dir().get_worldlabs_state_path();
|
||||
let path = self.app_data_root.credentials_dir().get_worldlabs_cookies_path();
|
||||
std::fs::write(path, cookies_header)?;
|
||||
}
|
||||
|
||||
|
||||
+53
-1
@@ -65,6 +65,8 @@ pub async fn worldlabs_login_window_thread(
|
||||
}
|
||||
}
|
||||
|
||||
/// NOTE: THERE IS THIS - https://marble.worldlabs.ai/sign-in?redirect=%2Fworlds
|
||||
|
||||
/// Returns true if we can exit.
|
||||
async fn check_login_window(
|
||||
app_handle: &AppHandle,
|
||||
@@ -77,7 +79,7 @@ async fn check_login_window(
|
||||
// World labs has no distinct login page. Everything is in a single SPA.
|
||||
|
||||
let mut is_logged_in = false;
|
||||
|
||||
|
||||
// See if pricing exists.
|
||||
// We'll use redirection to detect if we're done.
|
||||
let pricing_script = r#"
|
||||
@@ -90,6 +92,56 @@ async fn check_login_window(
|
||||
})();
|
||||
"#;
|
||||
|
||||
let indexed_db_access = r#"
|
||||
(() => {
|
||||
let db;
|
||||
|
||||
const request = indexedDB.open("firebaseLocalStorageDb");
|
||||
request.onerror = (event) => {
|
||||
console.error("Indexed DB Error", event);
|
||||
};
|
||||
|
||||
request.onsuccess = (event) => {
|
||||
db = event.target.result;
|
||||
let tx = db.transaction("firebaseLocalStorage", "readonly");
|
||||
let store = tx.objectStore("firebaseLocalStorage");
|
||||
|
||||
let keysRequest = store.getAllKeys();
|
||||
|
||||
keysRequest.onerror = (event) => {
|
||||
console.error("Error with getting all keys", error);
|
||||
};
|
||||
|
||||
keysRequest.onsuccess = () => {
|
||||
console.error('keys', keysRequest.result); // array of keys
|
||||
|
||||
let keys = keysRequest.result; // array of keys
|
||||
let key = keys[0];
|
||||
|
||||
const getKeyRequest = store.getKey(key);
|
||||
|
||||
getKeyRequest.onsuccess = () => {
|
||||
console.error('key result', getKeyRequest.result);
|
||||
};
|
||||
|
||||
store.openCursor().onsuccess = (event) => {
|
||||
const cursor = event.target.result;
|
||||
if (cursor) {
|
||||
console.error('cursor value', cursor.value);
|
||||
let tokens = cursor.value?.value?.stsTokenManager;
|
||||
console.error('tokens', tokens);
|
||||
|
||||
cursor.continue();
|
||||
} else {
|
||||
console.error("Entries all displayed.");
|
||||
}
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
})();
|
||||
"#;
|
||||
|
||||
webview_window.eval(pricing_script)?;
|
||||
|
||||
let hostname = get_webview_window_hostname(webview_window)?;
|
||||
|
||||
Reference in new issue
Block a user