summaryrefslogtreecommitdiff
path: root/src/permissions.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/permissions.rs')
-rw-r--r--src/permissions.rs46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/permissions.rs b/src/permissions.rs
index b40afb64e..03ffd20cb 100644
--- a/src/permissions.rs
+++ b/src/permissions.rs
@@ -12,6 +12,7 @@ use std::sync::atomic::{AtomicBool, Ordering};
#[cfg_attr(feature = "cargo-clippy", allow(stutter))]
#[derive(Debug, Default)]
pub struct DenoPermissions {
+ // Keep in sync with src/permissions.ts
pub allow_read: AtomicBool,
pub allow_write: AtomicBool,
pub allow_net: AtomicBool,
@@ -91,6 +92,51 @@ impl DenoPermissions {
r
}
+ pub fn allows_run(&self) -> bool {
+ return self.allow_run.load(Ordering::SeqCst);
+ }
+
+ pub fn allows_read(&self) -> bool {
+ return self.allow_read.load(Ordering::SeqCst);
+ }
+
+ pub fn allows_write(&self) -> bool {
+ return self.allow_write.load(Ordering::SeqCst);
+ }
+
+ pub fn allows_net(&self) -> bool {
+ return self.allow_net.load(Ordering::SeqCst);
+ }
+
+ pub fn allows_env(&self) -> bool {
+ return self.allow_env.load(Ordering::SeqCst);
+ }
+
+ pub fn revoke_run(&self) -> DenoResult<()> {
+ self.allow_run.store(false, Ordering::SeqCst);
+ return Ok(());
+ }
+
+ pub fn revoke_read(&self) -> DenoResult<()> {
+ self.allow_read.store(false, Ordering::SeqCst);
+ return Ok(());
+ }
+
+ pub fn revoke_write(&self) -> DenoResult<()> {
+ self.allow_write.store(false, Ordering::SeqCst);
+ return Ok(());
+ }
+
+ pub fn revoke_net(&self) -> DenoResult<()> {
+ self.allow_net.store(false, Ordering::SeqCst);
+ return Ok(());
+ }
+
+ pub fn revoke_env(&self) -> DenoResult<()> {
+ self.allow_env.store(false, Ordering::SeqCst);
+ return Ok(());
+ }
+
pub fn default() -> Self {
Self {
allow_read: AtomicBool::new(false),