From 81e7f03f7757f31cba0803cc089d555f56318a90 Mon Sep 17 00:00:00 2001
From: Eliot Berriot <contact@eliotberriot.com>
Date: Tue, 3 Apr 2018 23:25:22 +0200
Subject: [PATCH] Now persist actors in database during auth

---
 api/funkwhale_api/federation/actors.py         | 2 --
 api/funkwhale_api/federation/authentication.py | 6 +++++-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/api/funkwhale_api/federation/actors.py b/api/funkwhale_api/federation/actors.py
index 22b231e0..d70ce23e 100644
--- a/api/funkwhale_api/federation/actors.py
+++ b/api/funkwhale_api/federation/actors.py
@@ -255,8 +255,6 @@ class TestActor(SystemActor):
             accept,
             to=[ac['actor']],
             on_behalf_of=test_actor)
-        # we persist the sender in database
-        sender.save()
         models.Follow.objects.get_or_create(
             actor=sender,
             target=test_actor,
diff --git a/api/funkwhale_api/federation/authentication.py b/api/funkwhale_api/federation/authentication.py
index e199ef13..f2926bb3 100644
--- a/api/funkwhale_api/federation/authentication.py
+++ b/api/funkwhale_api/federation/authentication.py
@@ -7,6 +7,7 @@ from rest_framework import exceptions
 
 from . import actors
 from . import keys
+from . import models
 from . import serializers
 from . import signing
 from . import utils
@@ -42,7 +43,10 @@ class SignatureAuthentication(authentication.BaseAuthentication):
         except cryptography.exceptions.InvalidSignature:
             raise exceptions.AuthenticationFailed('Invalid signature')
 
-        return serializer.build()
+        try:
+            return models.Actor.objects.get(url=actor_data['id'])
+        except models.Actor.DoesNotExist:
+            return serializer.save()
 
     def authenticate(self, request):
         setattr(request, 'actor', None)
-- 
GitLab