diff --git a/fedireads/activitypub/actor.py b/fedireads/activitypub/actor.py index 63d49401..1144fd1c 100644 --- a/fedireads/activitypub/actor.py +++ b/fedireads/activitypub/actor.py @@ -13,6 +13,7 @@ def get_actor(user): 'preferredUsername': user.localname, 'name': user.name, 'inbox': user.inbox, + 'outbox': '%s/outbox' % user.actor, 'followers': '%s/followers' % user.actor, 'following': '%s/following' % user.actor, 'summary': user.summary, @@ -23,6 +24,7 @@ def get_actor(user): }, 'endpoints': { 'sharedInbox': user.shared_inbox, - } + }, + 'fedireadsUser': True, } diff --git a/fedireads/outgoing.py b/fedireads/outgoing.py index 79b47e1a..d22c2a92 100644 --- a/fedireads/outgoing.py +++ b/fedireads/outgoing.py @@ -66,7 +66,10 @@ def handle_account_search(query): data = response.json() for link in data['links']: if link['rel'] == 'self': - user = get_or_create_remote_user(link['href']) + try: + user = get_or_create_remote_user(link['href']) + except KeyError: + return HttpResponseNotFound() return user diff --git a/fedireads/remote_user.py b/fedireads/remote_user.py index 013358b1..8dbab159 100644 --- a/fedireads/remote_user.py +++ b/fedireads/remote_user.py @@ -29,23 +29,21 @@ def get_or_create_remote_user(actor): shared_inbox = data.get('endpoints').get('sharedInbox') if \ data.get('endpoints') else None - try: - user = models.User.objects.create_user( - username, - '', '', # email and passwords are left blank - actor=actor, - name=data.get('name'), - summary=data.get('summary'), - inbox=data['inbox'], #fail if there's no inbox - outbox=data['outbox'], # fail if there's no outbox - shared_inbox=shared_inbox, - # TODO: I'm never actually using this for remote users - public_key=data.get('publicKey').get('publicKeyPem'), - local=False, - fedireads_user=False, - ) - except KeyError: - return False + # throws a key error if it can't find any of these fields + user = models.User.objects.create_user( + username, + '', '', # email and passwords are left blank + actor=actor, + name=data.get('name'), + summary=data.get('summary'), + inbox=data['inbox'], #fail if there's no inbox + outbox=data['outbox'], # fail if there's no outbox + shared_inbox=shared_inbox, + # TODO: I'm never actually using this for remote users + public_key=data.get('publicKey').get('publicKeyPem'), + local=False, + fedireads_user=data.get('fedireadsUser', False), + ) return user diff --git a/fedireads/templates/user.html b/fedireads/templates/user.html index 27b2f7e9..ff3f06ba 100644 --- a/fedireads/templates/user.html +++ b/fedireads/templates/user.html @@ -14,15 +14,13 @@ {% endif %} {% if not is_self %} {% if not request.user in user.followers.all %} -
{% else %} - {% endif %} diff --git a/fedireads/templates/user_results.html b/fedireads/templates/user_results.html index 97d0d7ff..6c91b705 100644 --- a/fedireads/templates/user_results.html +++ b/fedireads/templates/user_results.html @@ -4,9 +4,8 @@ {% for result in results %}