pub struct Capability {
pub identifier: String,
pub description: String,
pub remote: Option<CapabilityRemote>,
pub local: bool,
pub windows: Vec<String>,
pub webviews: Vec<String>,
pub permissions: Vec<PermissionEntry>,
pub platforms: Option<Vec<Target>>,
}
Expand description
A grouping and boundary mechanism developers can use to isolate access to the IPC layer.
It controls application windows fine grained access to the Tauri core, application, or plugin commands. If a window is not matching any capability then it has no access to the IPC layer at all.
This can be done to create groups of windows, based on their required system access, which can reduce
impact of frontend vulnerabilities in less privileged windows.
Windows can be added to a capability by exact name (e.g. main-window
) or glob patterns like *
or admin-*
.
A Window can have none, one, or multiple associated capabilities.
§Example
{
"identifier": "main-user-files-write",
"description": "This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.",
"windows": [
"main"
],
"permissions": [
"core:default",
"dialog:open",
{
"identifier": "fs:allow-write-text-file",
"allow": [{ "path": "$HOME/test.txt" }]
},
],
"platforms": ["macOS","windows"]
}
Fields§
§identifier: String
§description: String
Description of what the capability is intended to allow on associated windows.
It should contain a description of what the grouped permissions should allow.
§Example
This capability allows the main
window access to filesystem
write related
commands and dialog
commands to enable programatic access to files selected by the user.
remote: Option<CapabilityRemote>
Configure remote URLs that can use the capability permissions.
This setting is optional and defaults to not being set, as our default use case is that the content is served from our local application.
:::caution Make sure you understand the security implications of providing remote sources with local system access. :::
§Example
{
"urls": ["https://*.mydomain.dev"]
}
local: bool
Whether this capability is enabled for local app URLs or not. Defaults to true
.
windows: Vec<String>
List of windows that are affected by this capability. Can be a glob pattern.
On multiwebview windows, prefer Self::webviews
for a fine grained access control.
§Example
["main"]
webviews: Vec<String>
List of webviews that are affected by this capability. Can be a glob pattern.
This is only required when using on multiwebview contexts, by default
all child webviews of a window that matches Self::windows
are linked.
§Example
["sub-webview-one", "sub-webview-two"]
permissions: Vec<PermissionEntry>
List of permissions attached to this capability.
Must include the plugin name as prefix in the form of ${plugin-name}:${permission-name}
.
For commands directly implemented in the application itself only ${permission-name}
is required.
§Example
[
"core:default",
"shell:allow-open",
"dialog:open",
{
"identifier": "fs:allow-write-text-file",
"allow": [{ "path": "$HOME/test.txt" }]
}
]
platforms: Option<Vec<Target>>
Limit which target platforms this capability applies to.
By default all platforms are targeted.
§Example
["macOS","windows"]
Implementations§
Trait Implementations§
Source§impl Clone for Capability
impl Clone for Capability
Source§fn clone(&self) -> Capability
fn clone(&self) -> Capability
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for Capability
impl Debug for Capability
Source§impl<'de> Deserialize<'de> for Capability
impl<'de> Deserialize<'de> for Capability
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for Capability
impl PartialEq for Capability
Source§impl Serialize for Capability
impl Serialize for Capability
impl StructuralPartialEq for Capability
Auto Trait Implementations§
impl Freeze for Capability
impl RefUnwindSafe for Capability
impl Send for Capability
impl Sync for Capability
impl Unpin for Capability
impl UnwindSafe for Capability
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)