]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
one-way imap password setting via API, ObfuscatedPasswordField
authorMichael Shamoon <4887959+shamoon@users.noreply.github.com>
Fri, 18 Nov 2022 22:21:31 +0000 (14:21 -0800)
committerMichael Shamoon <4887959+shamoon@users.noreply.github.com>
Sat, 3 Dec 2022 17:31:23 +0000 (09:31 -0800)
src/documents/serialisers.py

index d2fa10af9bdd5dd932cb3a6f1910a7e5e89fd67c..cede116fe6451b17ce95fc3334419ccfe42d3e8d 100644 (file)
@@ -692,7 +692,21 @@ class AcknowledgeTasksViewSerializer(serializers.Serializer):
         return tasks
 
 
+class ObfuscatedPasswordField(serializers.Field):
+    """
+    Sends *** string instead of password in the clear
+    """
+
+    def to_representation(self, value):
+        return re.sub(".", "*", value)
+
+    def to_internal_value(self, data):
+        return data
+
+
 class MailAccountSerializer(serializers.ModelSerializer):
+    password = ObfuscatedPasswordField()
+
     class Meta:
         model = MailAccount
         depth = 1
@@ -708,6 +722,9 @@ class MailAccountSerializer(serializers.ModelSerializer):
         ]
 
     def update(self, instance, validated_data):
+        if "password" in validated_data:
+            if len(validated_data.get("password").replace("*", "")) == 0:
+                validated_data.pop("password")
         super().update(instance, validated_data)
         return instance