feat(config): 在加密导出/导入中包含个人访问令牌
This commit is contained in:
@@ -520,3 +520,55 @@ impl AppConfig {
|
||||
// Ok(())
|
||||
// }
|
||||
}
|
||||
|
||||
/// Encrypted PAT data for export
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct EncryptedPat {
|
||||
/// Profile name
|
||||
pub profile_name: String,
|
||||
/// Service name (e.g., github, gitlab)
|
||||
pub service: String,
|
||||
/// User email (for keyring lookup)
|
||||
pub user_email: String,
|
||||
/// Encrypted token value
|
||||
pub encrypted_token: String,
|
||||
}
|
||||
|
||||
/// Export data container with optional encrypted PATs
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct ExportData {
|
||||
/// Configuration content (TOML string)
|
||||
pub config: String,
|
||||
/// Encrypted PATs (only present when exporting with encryption)
|
||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
||||
pub encrypted_pats: Vec<EncryptedPat>,
|
||||
/// Export version for future compatibility
|
||||
#[serde(default = "default_export_version")]
|
||||
pub export_version: String,
|
||||
}
|
||||
|
||||
fn default_export_version() -> String {
|
||||
"1".to_string()
|
||||
}
|
||||
|
||||
impl ExportData {
|
||||
pub fn new(config: String) -> Self {
|
||||
Self {
|
||||
config,
|
||||
encrypted_pats: Vec::new(),
|
||||
export_version: default_export_version(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn with_encrypted_pats(config: String, pats: Vec<EncryptedPat>) -> Self {
|
||||
Self {
|
||||
config,
|
||||
encrypted_pats: pats,
|
||||
export_version: default_export_version(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn has_encrypted_pats(&self) -> bool {
|
||||
!self.encrypted_pats.is_empty()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user