From b7fa4b012a2bfa671e13e68c4eee50f9c8997bf5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A2u=20Cao?=
Date: Sun, 13 Aug 2023 12:27:05 +0200
Subject: [PATCH] Allow Mastodon address domain to be different from primary
domain
---
app/models/setting.rb | 3 ++
app/models/user.rb | 5 +++
.../settings/services/_mastodon.html.erb | 4 +++
app/views/services/mastodon/show.html.erb | 2 +-
spec/models/user_spec.rb | 32 +++++++++++++++++++
5 files changed, 45 insertions(+), 1 deletion(-)
diff --git a/app/models/setting.rb b/app/models/setting.rb
index fc3b068..bfa495f 100644
--- a/app/models/setting.rb
+++ b/app/models/setting.rb
@@ -106,6 +106,9 @@ class Setting < RailsSettings::Base
field :mastodon_enabled, type: :boolean,
default: (ENV["MASTODON_PUBLIC_URL"].present?.to_s || false)
+ field :mastodon_address_domain, type: :string,
+ default: ENV["MASTODON_ADDRESS_DOMAIN"].presence || self.primary_domain
+
#
# MediaWiki
#
diff --git a/app/models/user.rb b/app/models/user.rb
index 6dca46d..cb596fe 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -110,6 +110,11 @@ class User < ApplicationRecord
"#{self.cn}@#{self.ou}"
end
+ def mastodon_address
+ return nil unless Setting.mastodon_enabled?
+ "#{self.cn}@#{Setting.mastodon_address_domain}"
+ end
+
def valid_attribute?(attribute_name)
self.valid?
self.errors[attribute_name].blank?
diff --git a/app/views/admin/settings/services/_mastodon.html.erb b/app/views/admin/settings/services/_mastodon.html.erb
index 0de87d2..1266db1 100644
--- a/app/views/admin/settings/services/_mastodon.html.erb
+++ b/app/views/admin/settings/services/_mastodon.html.erb
@@ -12,5 +12,9 @@
key: :mastodon_public_url,
title: "Public URL"
) %>
+ <%= render FormElements::FieldsetResettableSettingComponent.new(
+ key: :mastodon_address_domain,
+ title: "User address domain"
+ ) %>
<% end %>
diff --git a/app/views/services/mastodon/show.html.erb b/app/views/services/mastodon/show.html.erb
index d6cc0f8..3853a9d 100644
--- a/app/views/services/mastodon/show.html.erb
+++ b/app/views/services/mastodon/show.html.erb
@@ -13,7 +13,7 @@
disabled="disabled"
+ value=<%= current_user.mastodon_address %> disabled="disabled"
data-clipboard-target="source" />