mirror of
https://github.com/haexhub/haex-hub.git
synced 2025-12-16 22:20:51 +01:00
- Updated @haexhub/sdk dependency from 1.9.7 to 1.9.10 - Imported HAEXTENSION_METHODS and HAEXTENSION_EVENTS from SDK - Updated all handler files to use new nested method constants - Updated extensionMessageHandler to route using constants - Changed application.open routing in web handler - All method names now use haextension:subject:action schema
66 lines
2.1 KiB
Rust
66 lines
2.1 KiB
Rust
// src-tauri/src/extension/permissions/check.rs
|
|
|
|
use crate::extension::error::ExtensionError;
|
|
use crate::extension::permissions::manager::PermissionManager;
|
|
use crate::AppState;
|
|
use std::path::Path;
|
|
use tauri::State;
|
|
|
|
#[tauri::command]
|
|
pub async fn check_web_permission(
|
|
extension_id: String,
|
|
url: String,
|
|
state: State<'_, AppState>,
|
|
) -> Result<(), ExtensionError> {
|
|
PermissionManager::check_web_permission(&state, &extension_id, &url).await
|
|
}
|
|
|
|
#[tauri::command]
|
|
pub async fn check_database_permission(
|
|
extension_id: String,
|
|
resource: String,
|
|
operation: String,
|
|
state: State<'_, AppState>,
|
|
) -> Result<(), ExtensionError> {
|
|
let action = match operation.as_str() {
|
|
"read" => crate::extension::permissions::types::Action::Database(
|
|
crate::extension::permissions::types::DbAction::Read,
|
|
),
|
|
"write" => crate::extension::permissions::types::Action::Database(
|
|
crate::extension::permissions::types::DbAction::ReadWrite,
|
|
),
|
|
_ => {
|
|
return Err(ExtensionError::ValidationError {
|
|
reason: format!("Invalid database operation: {}", operation),
|
|
})
|
|
}
|
|
};
|
|
|
|
PermissionManager::check_database_permission(&state, &extension_id, action, &resource).await
|
|
}
|
|
|
|
#[tauri::command]
|
|
pub async fn check_filesystem_permission(
|
|
extension_id: String,
|
|
path: String,
|
|
operation: String,
|
|
state: State<'_, AppState>,
|
|
) -> Result<(), ExtensionError> {
|
|
let action = match operation.as_str() {
|
|
"read" => crate::extension::permissions::types::Action::Filesystem(
|
|
crate::extension::permissions::types::FsAction::Read,
|
|
),
|
|
"write" => crate::extension::permissions::types::Action::Filesystem(
|
|
crate::extension::permissions::types::FsAction::ReadWrite,
|
|
),
|
|
_ => {
|
|
return Err(ExtensionError::ValidationError {
|
|
reason: format!("Invalid filesystem operation: {}", operation),
|
|
})
|
|
}
|
|
};
|
|
|
|
let file_path = Path::new(&path);
|
|
PermissionManager::check_filesystem_permission(&state, &extension_id, action, file_path).await
|
|
}
|