summaryrefslogtreecommitdiffstats
path: root/app/controllers
diff options
context:
space:
mode:
authorThibG <thib@sitedethib.com>2019-07-19 01:44:42 +0200
committerEugen Rochko <eugen@zeonfederated.com>2019-07-19 01:44:42 +0200
commit730c4053d642024b9949d72c8a9f1873532c6212 (patch)
treef6bee482d07ccf0e51cd024bc759d3b48f6894f2 /app/controllers
parent15c7478c5560a1f654d0d00d8ee2a624acb34089 (diff)
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 profile
Diffstat (limited to 'app/controllers')
-rw-r--r--app/controllers/about_controller.rb4
-rw-r--r--app/controllers/application_controller.rb2
-rw-r--r--app/controllers/home_controller.rb2
-rw-r--r--app/controllers/instance_actors_controller.rb20
4 files changed, 25 insertions, 3 deletions
diff --git a/app/controllers/about_controller.rb b/app/controllers/about_controller.rb
index 52fb1dc1b3e..33bac9bbc72 100644
--- a/app/controllers/about_controller.rb
+++ b/app/controllers/about_controller.rb
@@ -11,7 +11,9 @@ class AboutController < ApplicationController
def show; end
- def more; end
+ def more
+ flash.now[:notice] = I18n.t('about.instance_actor_flash') if params[:instance_actor]
+ end
def terms; end
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 26f3b1def5b..51e9764d49e 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -91,7 +91,7 @@ class ApplicationController < ActionController::Base
end
def single_user_mode?
- @single_user_mode ||= Rails.configuration.x.single_user_mode && Account.exists?
+ @single_user_mode ||= Rails.configuration.x.single_user_mode && Account.where('id > 0').exists?
end
def use_seamless_external_login?
diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb
index d1c52513479..42493cd7825 100644
--- a/app/controllers/home_controller.rb
+++ b/app/controllers/home_controller.rb
@@ -58,7 +58,7 @@ class HomeController < ApplicationController
if request.path.start_with?('/web')
new_user_session_path
elsif single_user_mode?
- short_account_path(Account.local.without_suspended.first)
+ short_account_path(Account.local.without_suspended.where('id > 0').first)
else
about_path
end
diff --git a/app/controllers/instance_actors_controller.rb b/app/controllers/instance_actors_controller.rb
new file mode 100644
index 00000000000..41f33602e69
--- /dev/null
+++ b/app/controllers/instance_actors_controller.rb
@@ -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