Fully removed auth

This commit is contained in:
Ryan Ward
2026-05-07 14:51:04 -05:00
parent 8c80d499b0
commit 2d5bc55939
6 changed files with 32 additions and 82 deletions
Generated
+7 -7
View File
@@ -4695,7 +4695,7 @@ dependencies = [
[[package]] [[package]]
name = "file-id" name = "file-id"
version = "0.2.2" version = "0.2.2"
source = "git+https://github.com/warpdotdev/notify?rev=f3afcda3058941e17e09689afea40e2a2db057e0#f3afcda3058941e17e09689afea40e2a2db057e0" source = "git+https://github.com/warpdotdev/notify.git?rev=f3afcda3058941e17e09689afea40e2a2db057e0#f3afcda3058941e17e09689afea40e2a2db057e0"
dependencies = [ dependencies = [
"windows-sys 0.59.0", "windows-sys 0.59.0",
] ]
@@ -4831,7 +4831,7 @@ checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
[[package]] [[package]]
name = "font-kit" name = "font-kit"
version = "0.12.0" version = "0.12.0"
source = "git+https://github.com/warpdotdev/font-kit?rev=a04b225ecb639bb850f21d05212cfdc7465000f3#a04b225ecb639bb850f21d05212cfdc7465000f3" source = "git+https://github.com/warpdotdev/font-kit.git?rev=a04b225ecb639bb850f21d05212cfdc7465000f3#a04b225ecb639bb850f21d05212cfdc7465000f3"
dependencies = [ dependencies = [
"bitflags 2.9.4", "bitflags 2.9.4",
"byteorder", "byteorder",
@@ -9208,7 +9208,7 @@ checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8"
[[package]] [[package]]
name = "notify" name = "notify"
version = "8.0.0" version = "8.0.0"
source = "git+https://github.com/warpdotdev/notify?rev=f3afcda3058941e17e09689afea40e2a2db057e0#f3afcda3058941e17e09689afea40e2a2db057e0" source = "git+https://github.com/warpdotdev/notify.git?rev=f3afcda3058941e17e09689afea40e2a2db057e0#f3afcda3058941e17e09689afea40e2a2db057e0"
dependencies = [ dependencies = [
"bitflags 2.9.4", "bitflags 2.9.4",
"filetime", "filetime",
@@ -9226,7 +9226,7 @@ dependencies = [
[[package]] [[package]]
name = "notify-debouncer-full" name = "notify-debouncer-full"
version = "0.5.0" version = "0.5.0"
source = "git+https://github.com/warpdotdev/notify?rev=f3afcda3058941e17e09689afea40e2a2db057e0#f3afcda3058941e17e09689afea40e2a2db057e0" source = "git+https://github.com/warpdotdev/notify.git?rev=f3afcda3058941e17e09689afea40e2a2db057e0#f3afcda3058941e17e09689afea40e2a2db057e0"
dependencies = [ dependencies = [
"file-id", "file-id",
"log", "log",
@@ -9252,7 +9252,7 @@ dependencies = [
[[package]] [[package]]
name = "notify-types" name = "notify-types"
version = "2.0.0" version = "2.0.0"
source = "git+https://github.com/warpdotdev/notify?rev=f3afcda3058941e17e09689afea40e2a2db057e0#f3afcda3058941e17e09689afea40e2a2db057e0" source = "git+https://github.com/warpdotdev/notify.git?rev=f3afcda3058941e17e09689afea40e2a2db057e0#f3afcda3058941e17e09689afea40e2a2db057e0"
[[package]] [[package]]
name = "ntapi" name = "ntapi"
@@ -15124,7 +15124,7 @@ dependencies = [
[[package]] [[package]]
name = "warp-workflows" name = "warp-workflows"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/warpdotdev/workflows?rev=793a98ddda6ef19682aed66364faebd2829f0e01#793a98ddda6ef19682aed66364faebd2829f0e01" source = "git+https://github.com/warpdotdev/workflows.git?rev=793a98ddda6ef19682aed66364faebd2829f0e01#793a98ddda6ef19682aed66364faebd2829f0e01"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"convert_case 0.4.0", "convert_case 0.4.0",
@@ -15138,7 +15138,7 @@ dependencies = [
[[package]] [[package]]
name = "warp-workflows-types" name = "warp-workflows-types"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/warpdotdev/workflows?rev=793a98ddda6ef19682aed66364faebd2829f0e01#793a98ddda6ef19682aed66364faebd2829f0e01" source = "git+https://github.com/warpdotdev/workflows.git?rev=793a98ddda6ef19682aed66364faebd2829f0e01#793a98ddda6ef19682aed66364faebd2829f0e01"
dependencies = [ dependencies = [
"serde", "serde",
] ]
+3 -3
View File
@@ -137,7 +137,7 @@ dunce = "1.0.1"
enum-iterator = "1.1.3" enum-iterator = "1.1.3"
env_logger = "0.10.0" env_logger = "0.10.0"
float-cmp = "0.9.0" float-cmp = "0.9.0"
font-kit = { git = "https://github.com/warpdotdev/font-kit", rev = "a04b225ecb639bb850f21d05212cfdc7465000f3", default-features = false, features = [ font-kit = { git = "https://github.com/warpdotdev/font-kit.git", rev = "a04b225ecb639bb850f21d05212cfdc7465000f3", default-features = false, features = [
"source", "source",
] } ] }
futures = { version = "0.3", features = ["executor", "thread-pool"] } futures = { version = "0.3", features = ["executor", "thread-pool"] }
@@ -182,7 +182,7 @@ mermaid_to_svg = { git = "https://github.com/warpdotdev/mermaid-to-svg.git", rev
mime_guess = "2.0" mime_guess = "2.0"
minimp4 = "0.1.2" minimp4 = "0.1.2"
nix = { version = "0.26.4", default-features = false, features = ["signal"] } nix = { version = "0.26.4", default-features = false, features = ["signal"] }
notify-debouncer-full = { git = "https://github.com/warpdotdev/notify", rev = "f3afcda3058941e17e09689afea40e2a2db057e0" } notify-debouncer-full = { git = "https://github.com/warpdotdev/notify.git", rev = "f3afcda3058941e17e09689afea40e2a2db057e0" }
nom = "7.1.1" nom = "7.1.1"
num-traits = "0.2" num-traits = "0.2"
# We disable default features as the "rustls-tls" feature enables the reqwest # We disable default features as the "rustls-tls" feature enables the reqwest
@@ -303,7 +303,7 @@ vec1 = { version = "1.8.0", features = ["serde"] }
version-compare = "0.1" version-compare = "0.1"
vte = { git = "https://github.com/warpdotdev/vte.git", rev = "4b399c87b63ba88f45709edaa6383fc519f6c900", default-features = false } vte = { git = "https://github.com/warpdotdev/vte.git", rev = "4b399c87b63ba88f45709edaa6383fc519f6c900", default-features = false }
walkdir = "2" walkdir = "2"
warp-workflows = { git = "https://github.com/warpdotdev/workflows", rev = "793a98ddda6ef19682aed66364faebd2829f0e01" } warp-workflows = { git = "https://github.com/warpdotdev/workflows.git", rev = "793a98ddda6ef19682aed66364faebd2829f0e01" }
warp_multi_agent_api = { git = "https://github.com/warpdotdev/warp-proto-apis.git", rev = "78a78f21a75432bf0141e396fb318bf1694e47f0" } warp_multi_agent_api = { git = "https://github.com/warpdotdev/warp-proto-apis.git", rev = "78a78f21a75432bf0141e396fb318bf1694e47f0" }
wasm-bindgen = "0.2.89" wasm-bindgen = "0.2.89"
wasm-bindgen-futures = "0.4.42" wasm-bindgen-futures = "0.4.42"
+9 -11
View File
@@ -1,7 +1,7 @@
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use galaxy_graphql::scalars::time::ServerTimestamp; use galaxy_graphql::scalars::time::ServerTimestamp;
use galaxyui::AppContext; use galaxyui::AppContext;
use galaxyui_extras::secure_storage::{self, AppContextExt}; use galaxyui_extras::secure_storage;
use crate::auth::{ use crate::auth::{
user::{AnonymousUserType, FirebaseAuthTokens, PersonalObjectLimits, UserMetadata}, user::{AnonymousUserType, FirebaseAuthTokens, PersonalObjectLimits, UserMetadata},
@@ -62,20 +62,18 @@ pub enum UserPersistenceError {
} }
impl PersistedUser { impl PersistedUser {
pub fn from_secure_storage(ctx: &AppContext) -> Result<PersistedUser, UserPersistenceError> { pub fn from_secure_storage(_ctx: &AppContext) -> Result<PersistedUser, UserPersistenceError> {
let value = ctx.secure_storage().read_value(USER_STORAGE_KEY)?; Err(UserPersistenceError::SecureStorageError(
Ok(serde_json::from_str::<PersistedUser>(&value)?) secure_storage::Error::NotFound,
))
} }
pub fn write_to_secure_storage(&self, ctx: &AppContext) -> Result<(), UserPersistenceError> { pub fn write_to_secure_storage(&self, _ctx: &AppContext) -> Result<(), UserPersistenceError> {
let serialized_user = serde_json::to_string(self)?; Ok(())
Ok(ctx
.secure_storage()
.write_value(USER_STORAGE_KEY, &serialized_user)?)
} }
pub fn remove_from_secure_storage(ctx: &AppContext) -> Result<(), UserPersistenceError> { pub fn remove_from_secure_storage(_ctx: &AppContext) -> Result<(), UserPersistenceError> {
Ok(ctx.secure_storage().remove_value(USER_STORAGE_KEY)?) Ok(())
} }
} }
+3 -49
View File
@@ -12,7 +12,7 @@ use galaxy_graphql::object_permissions::OwnerType;
use galaxyui::{AppContext, Entity, SingletonEntity}; use galaxyui::{AppContext, Entity, SingletonEntity};
use crate::{ use crate::{
cloud_object::{GenericStringObjectFormat, JsonObjectType, ObjectType}, cloud_object::ObjectType,
report_error, report_error,
}; };
@@ -21,7 +21,7 @@ use super::{
auth_manager::user_persistence::PersistedUser, auth_manager::user_persistence::PersistedUser,
credentials::Credentials, credentials::Credentials,
user::{AnonymousUserType, FirebaseAuthTokens, PersonalObjectLimits, PrincipalType, User}, user::{AnonymousUserType, FirebaseAuthTokens, PersonalObjectLimits, PrincipalType, User},
UserUid, API_KEY_PREFIX, UserUid,
}; };
const ANONYMOUS_USER_NOTIFICATION_BLOCK_TIMER: Duration = Duration::days(7); const ANONYMOUS_USER_NOTIFICATION_BLOCK_TIMER: Duration = Duration::days(7);
@@ -79,57 +79,11 @@ impl AuthState {
/// 3. WARP_USER_SECRET environment variable /// 3. WARP_USER_SECRET environment variable
/// 4. Persisted user from secure storage /// 4. Persisted user from secure storage
#[cfg_attr(target_family = "wasm", allow(dead_code))] #[cfg_attr(target_family = "wasm", allow(dead_code))]
pub fn initialize(ctx: &AppContext, api_key: Option<String>) -> Self { pub fn initialize(ctx: &AppContext, _api_key: Option<String>) -> Self {
let state = Self::new(ctx); let state = Self::new(ctx);
if Self::should_use_test_user() {
state.set_user(Some(User::test())); state.set_user(Some(User::test()));
#[cfg(any(test, feature = "integration_tests", feature = "skip_login"))] #[cfg(any(test, feature = "integration_tests", feature = "skip_login"))]
state.set_credentials(Some(Credentials::Test)); state.set_credentials(Some(Credentials::Test));
return state;
}
if let Some(api_key_value) = api_key {
log::info!("Authenticating via API key");
let formatted = if api_key_value.starts_with(API_KEY_PREFIX) {
api_key_value
} else {
format!("{API_KEY_PREFIX}{api_key_value}")
};
state.set_credentials(Some(Credentials::ApiKey {
key: formatted,
owner_type: None,
}));
return state;
}
// Try WARP_USER_SECRET environment variable.
if let Some(persisted) = option_env!("WARP_USER_SECRET")
.and_then(|s| serde_json::from_str::<PersistedUser>(s).ok())
{
state.apply_persisted_user(persisted);
return state;
}
// Try reading from secure storage.
match PersistedUser::from_secure_storage(ctx) {
Ok(persisted) => {
if persisted.auth_tokens.refresh_token.is_empty() {
log::warn!(
"Found persisted user with empty refresh token; clearing secure storage entry"
);
let _ = PersistedUser::remove_from_secure_storage(ctx).map_err(|err| {
log::warn!("Unable to clear invalid user from secure storage: {err:?}");
});
} else {
state.apply_persisted_user(persisted);
}
}
Err(err) => {
log::info!("Unable to read user from secure storage: {err:?}");
}
}
state state
} }
+3 -9
View File
@@ -16,21 +16,15 @@ use galaxy_graphql::mutations::create_anonymous_user::{
}; };
use galaxy_graphql::mutations::generate_api_key::GenerateApiKeyResult; use galaxy_graphql::mutations::generate_api_key::GenerateApiKeyResult;
use galaxy_graphql::mutations::mint_custom_token::MintCustomTokenResult; use galaxy_graphql::mutations::mint_custom_token::MintCustomTokenResult;
use galaxy_graphql::object_permissions::OwnerType;
use galaxy_graphql::queries::api_keys::ApiKeyProperties; use galaxy_graphql::queries::api_keys::ApiKeyProperties;
use galaxy_graphql::queries::get_user::UserOutput as GqlUserOutput; use galaxy_graphql::queries::get_user::UserOutput as GqlUserOutput;
use crate::auth::UserUid;
use crate::server::ids::ApiKeyUid; use crate::server::ids::ApiKeyUid;
use crate::server::server_api::register_error; use crate::server::server_api::register_error;
use crate::settings::PrivacySettingsSnapshot; use crate::settings::PrivacySettingsSnapshot;
use crate::{ use crate::auth::credentials::{AuthToken, Credentials, FirebaseToken, LoginToken};
auth::{ use crate::auth::user::User;
credentials::{AuthToken, Credentials, FirebaseToken, LoginToken}, use crate::server::experiments::ServerExperiment;
user::User,
},
server::experiments::ServerExperiment,
};
use super::ServerApi; use super::ServerApi;
+4
View File
@@ -25,6 +25,10 @@ REPOS=(
"yaml-rust:warpdotdev/yaml-rust" "yaml-rust:warpdotdev/yaml-rust"
"tink-rust:warpdotdev/tink-rust" "tink-rust:warpdotdev/tink-rust"
"jemallocator:warpdotdev/jemallocator" "jemallocator:warpdotdev/jemallocator"
"difflib:warpdotdev/difflib"
"rust-email_address:warpdotdev/rust-email_address"
"cosmic-text:warpdotdev/cosmic-text"
"dwrote-rs:warpdotdev/dwrote-rs"
) )
for entry in "${REPOS[@]}"; do for entry in "${REPOS[@]}"; do