From 4d4eec548fc864ebcda2f1dd65929ceef5ccd1dc Mon Sep 17 00:00:00 2001
From: Sandra Westerhoff
 <21272-sandra.westerhoff@users.noreply.git.rwth-aachen.de>
Date: Tue, 15 Jun 2021 14:20:00 +0000
Subject: [PATCH] Update: Check for archived status (coscine/issues#1575)

---
 src/Blob/Controllers/BlobController.cs | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/src/Blob/Controllers/BlobController.cs b/src/Blob/Controllers/BlobController.cs
index ef88a79..55e0989 100644
--- a/src/Blob/Controllers/BlobController.cs
+++ b/src/Blob/Controllers/BlobController.cs
@@ -1,4 +1,4 @@
-using Coscine.ApiCommons;
+using Coscine.ApiCommons;
 using Coscine.Configuration;
 using Coscine.Database.DataModel;
 using Coscine.Database.Models;
@@ -106,7 +106,7 @@ namespace Coscine.Api.Blob.Controllers
 
             if (user == null || !_resourceModel.HasAccess(user, resource, UserRoles.Owner, UserRoles.Member))
             {
-                return Forbid("User does not have permission to the resource.");
+                return BadRequest("User does not have permission to the resource.");
             }
 
             if ((resource.Type.DisplayName.ToLower() == "rds" || resource.Type.DisplayName.ToLower() == "rdss3") && resource.ResourceTypeOptionId.HasValue)
@@ -210,6 +210,11 @@ namespace Coscine.Api.Blob.Controllers
                 return checkUser;
             }
 
+            if (resource.Archived == "1")
+            {
+                return BadRequest("The resource is readonly!");
+            }
+
             if (files.Count != 1)
             {
                 return BadRequest($"Only one file can be uploaded per request.");
@@ -277,6 +282,12 @@ namespace Coscine.Api.Blob.Controllers
             {
                 return checkUser;
             }
+
+            if (resource.Archived == "1")
+            {
+                return BadRequest("The resource is readonly!");
+            }
+
             try
             {
                 var resourceTypeOptions = _resourceModel.GetResourceTypeOptions(resource.Id);
-- 
GitLab