Browse Source

Delete existing log-in information to force the user to log in again

Otherwise they won't be able to sync material profiles.

Contributes to issue CURA-8609.
Ghostkeeper 3 years ago
parent
commit
5ed57e403c

+ 23 - 0
plugins/VersionUpgrade/VersionUpgrade411to412/VersionUpgrade411to412.py

@@ -3,6 +3,7 @@
 
 import configparser
 import io
+import json
 import os.path
 from typing import List, Tuple
 
@@ -49,6 +50,28 @@ class VersionUpgrade411to412(VersionUpgrade):
         # Update version number.
         parser["metadata"]["setting_version"] = "19"
 
+        # If the account scope in 4.11 is outdated, delete it so that the user is enforced to log in again and get the
+        # correct permissions.
+        new_scopes = {"account.user.read",
+                      "drive.backup.read",
+                      "drive.backup.write",
+                      "packages.download",
+                      "packages.rating.read",
+                      "packages.rating.write",
+                      "connect.cluster.read",
+                      "connect.cluster.write",
+                      "library.project.read",
+                      "library.project.write",
+                      "cura.printjob.read",
+                      "cura.printjob.write",
+                      "cura.mesh.read",
+                      "cura.mesh.write",
+                      "cura.material.write"}
+        if "ultimaker_auth_data" in parser["general"]:
+            ultimaker_auth_data = json.loads(parser["general"]["ultimaker_auth_data"])
+            if new_scopes - set(ultimaker_auth_data["scope"].split(" ")):
+                parser["general"]["ultimaker_auth_data"] = "{}"
+
         result = io.StringIO()
         parser.write(result)
         return [filename], [result.getvalue()]