Fix #2, add rake task for PuSH-unsubscribing from remote users who have no
local followers. Remote users' usernames SHOULD be case-sensitive
This commit is contained in:
parent
af7ae348d7
commit
323474c97e
3 changed files with 22 additions and 3 deletions
|
@ -19,12 +19,17 @@ class Api::AccountsController < ApiController
|
|||
end
|
||||
|
||||
def follow
|
||||
@follow = current_user.account.follow!(@account)
|
||||
if @account.local?
|
||||
@follow = current_user.account.follow!(@account)
|
||||
else
|
||||
@follow = FollowService.new.(current_user.account, @account.acct)
|
||||
end
|
||||
|
||||
render action: :show
|
||||
end
|
||||
|
||||
def unfollow
|
||||
@unfollow = current_user.account.unfollow!(@account)
|
||||
@unfollow = UnfollowService.new.(current_user.account, @account)
|
||||
render action: :show
|
||||
end
|
||||
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
class Account < ActiveRecord::Base
|
||||
# Local users
|
||||
has_one :user, inverse_of: :account
|
||||
validates :username, uniqueness: { scope: :domain, case_sensitive: false }
|
||||
validates :username, uniqueness: { scope: :domain, case_sensitive: false }, if: 'local?'
|
||||
validates :username, uniqueness: { scope: :domain, case_sensitive: true }, unless: 'local?'
|
||||
|
||||
# Avatar upload
|
||||
attr_reader :avatar_remote_url
|
||||
|
|
13
lib/tasks/subscriptions.rake
Normal file
13
lib/tasks/subscriptions.rake
Normal file
|
@ -0,0 +1,13 @@
|
|||
namespace :subscriptions do
|
||||
|
||||
desc "For all remote accounts that have no local followers, unsubscribe from PuSH"
|
||||
task clear: :environment do
|
||||
accounts = Account.where('(select count(f.id) from follows as f where f.target_account_id = accounts.id) = 0').where.not(domain: nil)
|
||||
|
||||
accounts.each do |a|
|
||||
a.subscription(api_subscription_url(a.id)).unsubscribe
|
||||
a.update!(verify_token: '', secret: '')
|
||||
end
|
||||
end
|
||||
|
||||
end
|
Loading…
Reference in a new issue