diff --git a/app/models/account_alias.rb b/app/models/account_alias.rb
index 66f8ce4095..3d0b5d188f 100644
--- a/app/models/account_alias.rb
+++ b/app/models/account_alias.rb
@@ -18,6 +18,7 @@ class AccountAlias < ApplicationRecord
validates :acct, presence: true, domain: { acct: true }
validates :uri, presence: true
validates :uri, uniqueness: { scope: :account_id }
+ validate :validate_target_account
before_validation :set_uri
after_create :add_to_account
@@ -44,4 +45,12 @@ class AccountAlias < ApplicationRecord
def remove_from_account
account.update(also_known_as: account.also_known_as.reject { |x| x == uri })
end
+
+ def validate_target_account
+ if uri.nil?
+ errors.add(:acct, I18n.t('migrations.errors.not_found'))
+ elsif ActivityPub::TagManager.instance.uri_for(account) == uri
+ errors.add(:acct, I18n.t('migrations.errors.move_to_self'))
+ end
+ end
end
diff --git a/app/views/settings/aliases/index.html.haml b/app/views/settings/aliases/index.html.haml
index 5b69863681..5df0c9669a 100644
--- a/app/views/settings/aliases/index.html.haml
+++ b/app/views/settings/aliases/index.html.haml
@@ -23,7 +23,11 @@
%th= t('simple_form.labels.account_alias.acct')
%th
%tbody
- - @aliases.each do |account_alias|
+ - if @aliases.empty?
%tr
- %td= account_alias.acct
- %td= table_link_to 'trash', t('aliases.remove'), settings_alias_path(account_alias), data: { method: :delete }
+ %td.muted-hint{ colspan: 2 }= t('aliases.empty')
+ - else
+ - @aliases.each do |account_alias|
+ %tr
+ %td= account_alias.acct
+ %td= table_link_to 'trash', t('aliases.remove'), settings_alias_path(account_alias), data: { method: :delete }
diff --git a/config/locales/en.yml b/config/locales/en.yml
index d07c4bb997..8a7cf070fd 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -635,6 +635,7 @@ en:
add_new: Create alias
created_msg: Successfully created a new alias. You can now initiate the move from the old account.
deleted_msg: Successfully remove the alias. Moving from that account to this one will no longer be possible.
+ empty: You have no aliases.
hint_html: If you want to move from another account to this one, here you can create an alias, which is required before you can proceed with moving followers from the old account to this one. This action by itself is harmless and reversible. The account migration is initiated from the old account.
remove: Unlink alias
appearance: