Add ActivityPub actor representing the entire server (#11321)
* Add support for an instance actor * Skip username validation for local Application accounts * Add migration script to create instance actor * Make Codeclimate happy * Switch to id -99 for instance actor * Remove unused `icon` and `image` attributes from instance actor * Use if/elsif/else instead of return + ternary operator * Add instance actor to fresh installs * Use instance actor as instance representative Use instance actor for forwarding reports, relay operations, and spam auto-reporting. * Seed database in test environment * Fix single-user mode * Fix tests * Fix specs to accomodate for an extra `Account` * Auto-reject follows on instance actor Following an instance actor might make sense, but we are not handling that right now, so auto-reject. * Fix webfinger lookup and serialization for instance actor * Rename instance actor * Make it clear in the HTML view that the instance actor should not be blocked * Raise cache time for instance actor as there's no dynamic content * Re-use /about/more with a flash message for instance actor profilemaster
parent
15c7478c55
commit
730c4053d6
@ -0,0 +1,20 @@ |
||||
# frozen_string_literal: true |
||||
|
||||
class InstanceActorsController < ApplicationController |
||||
include AccountControllerConcern |
||||
|
||||
def show |
||||
expires_in 10.minutes, public: true |
||||
render json: @account, content_type: 'application/activity+json', serializer: ActivityPub::ActorSerializer, adapter: ActivityPub::Adapter, fields: restrict_fields_to |
||||
end |
||||
|
||||
private |
||||
|
||||
def set_account |
||||
@account = Account.find(-99) |
||||
end |
||||
|
||||
def restrict_fields_to |
||||
%i(id type preferred_username inbox public_key endpoints url manually_approves_followers) |
||||
end |
||||
end |
@ -0,0 +1,9 @@ |
||||
class AddInstanceActor < ActiveRecord::Migration[5.2] |
||||
def up |
||||
Account.create!(id: -99, actor_type: 'Application', locked: true, username: Rails.configuration.x.local_domain) |
||||
end |
||||
|
||||
def down |
||||
Account.find_by(id: -99, actor_type: 'Application').destroy! |
||||
end |
||||
end |
Loading…
Reference in new issue