chiark / gitweb /
bundles: Move authproof into open_by_name
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 4 May 2021 00:19:59 +0000 (01:19 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 4 May 2021 00:19:59 +0000 (01:19 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
daemon/cmdlistener.rs
src/bundles.rs

index 40479d0f62ba4b7c9bf95202745d60985c0b224f..231bf66d7487977dc0d265b00dabe69ed10cc36b 100644 (file)
@@ -253,10 +253,9 @@ fn execute_and_respond<R,W>(cs: &mut CommandStreamData, cmd: MgmtCommand,
       let ag = AccountsGuard::lock();
       let gref = Instance::lookup_by_name_unauth(&game)?;
       let mut igu = gref.lock()?;
-      let (ig, auth) = cs.check_acl(&ag, &mut igu, PCH::Instance,
+      let (ig, _) = cs.check_acl(&ag, &mut igu, PCH::Instance,
                                      TP_ACCESS_BUNDLES)?;
-      let f = id.open(&ig.name,auth.bundles())?
-        .ok_or_else(|| ME::BundleNotFound)?;
+      let f = id.open(&ig)?.ok_or_else(|| ME::BundleNotFound)?;
       bulk_download = Some(Box::new(f));
       Fine
     }
index 57db87fd12c3aff807f4294562abcb180d269e5d..4d412011c280529a8167a86e0311ee868005b509 100644 (file)
@@ -122,8 +122,8 @@ impl Id {
   }
 
   #[throws(IE)]
-  pub fn open(&self, instance_name: &InstanceName,
-              _: Authorisation<Id>) -> Option<fs::File> {
+  pub fn open_by_name(&self, instance_name: &InstanceName,
+                      _: Authorisation<Id>) -> Option<fs::File> {
     let path = self.path(instance_name);
     match File::open(&path) {
       Ok(f) => Some(f),
@@ -133,6 +133,13 @@ impl Id {
       ),
     }
   }
+
+  #[throws(IE)]
+  pub fn open(&self, instance: &Instance) -> Option<fs::File> {
+    let name = &*instance.name;
+    let auth = Authorisation::authorised(name).bundles();
+    self.open_by_name(name, auth)?
+  }
 }
 
 #[derive(Debug,Copy,Clone,Error)]