Add support for reversible suspensions through ActivityPub (#14989)
This commit is contained in:
parent
ee8cf246cf
commit
3134691948
47 changed files with 1049 additions and 204 deletions
|
@ -51,6 +51,7 @@
|
|||
# header_storage_schema_version :integer
|
||||
# devices_url :string
|
||||
# sensitized_at :datetime
|
||||
# suspension_origin :integer
|
||||
#
|
||||
|
||||
class Account < ApplicationRecord
|
||||
|
@ -73,6 +74,7 @@ class Account < ApplicationRecord
|
|||
}.freeze
|
||||
|
||||
enum protocol: [:ostatus, :activitypub]
|
||||
enum suspension_origin: [:local, :remote], _prefix: true
|
||||
|
||||
validates :username, presence: true
|
||||
validates_with UniqueUsernameValidator, if: -> { will_save_change_to_username? }
|
||||
|
@ -222,17 +224,25 @@ class Account < ApplicationRecord
|
|||
suspended_at.present?
|
||||
end
|
||||
|
||||
def suspend!(date = Time.now.utc)
|
||||
def suspended_permanently?
|
||||
suspended? && deletion_request.nil?
|
||||
end
|
||||
|
||||
def suspended_temporarily?
|
||||
suspended? && deletion_request.present?
|
||||
end
|
||||
|
||||
def suspend!(date: Time.now.utc, origin: :local)
|
||||
transaction do
|
||||
create_deletion_request!
|
||||
update!(suspended_at: date)
|
||||
update!(suspended_at: date, suspension_origin: origin)
|
||||
end
|
||||
end
|
||||
|
||||
def unsuspend!
|
||||
transaction do
|
||||
deletion_request&.destroy!
|
||||
update!(suspended_at: nil)
|
||||
update!(suspended_at: nil, suspension_origin: nil)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue