2017-01-15 13:01:33 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
module ApplicationExtension
|
|
|
|
extend ActiveSupport::Concern
|
|
|
|
|
|
|
|
included do
|
2024-02-14 14:15:34 +00:00
|
|
|
include Redisable
|
|
|
|
|
2023-07-21 12:13:16 +01:00
|
|
|
has_many :created_users, class_name: 'User', foreign_key: 'created_by_application_id', inverse_of: :created_by_application
|
|
|
|
|
2021-04-15 15:28:43 +01:00
|
|
|
validates :name, length: { maximum: 60 }
|
|
|
|
validates :website, url: true, length: { maximum: 2_000 }, if: :website?
|
|
|
|
validates :redirect_uri, length: { maximum: 2_000 }
|
2024-02-14 14:15:34 +00:00
|
|
|
|
|
|
|
# The relationship used between Applications and AccessTokens is using
|
|
|
|
# dependent: delete_all, which means the ActiveRecord callback in
|
|
|
|
# AccessTokenExtension is not run, so instead we manually announce to
|
|
|
|
# streaming that these tokens are being deleted.
|
2024-07-04 15:11:28 +01:00
|
|
|
before_destroy :close_streaming_sessions, prepend: true
|
2017-01-15 13:01:33 +00:00
|
|
|
end
|
2022-03-01 15:48:58 +00:00
|
|
|
|
2022-05-26 21:03:54 +01:00
|
|
|
def confirmation_redirect_uri
|
|
|
|
redirect_uri.lines.first.strip
|
|
|
|
end
|
2024-02-14 14:15:34 +00:00
|
|
|
|
2024-05-17 14:46:12 +01:00
|
|
|
def redirect_uris
|
|
|
|
# Doorkeeper stores the redirect_uri value as a newline delimeted list in
|
|
|
|
# the database:
|
|
|
|
redirect_uri.split
|
|
|
|
end
|
|
|
|
|
2024-07-04 15:11:28 +01:00
|
|
|
def close_streaming_sessions(resource_owner = nil)
|
2024-02-14 14:15:34 +00:00
|
|
|
# TODO: #28793 Combine into a single topic
|
|
|
|
payload = Oj.dump(event: :kill)
|
2024-07-04 15:11:28 +01:00
|
|
|
scope = access_tokens
|
|
|
|
scope = scope.where(resource_owner_id: resource_owner.id) unless resource_owner.nil?
|
|
|
|
scope.in_batches do |tokens|
|
2024-02-14 14:15:34 +00:00
|
|
|
redis.pipelined do |pipeline|
|
|
|
|
tokens.ids.each do |id|
|
|
|
|
pipeline.publish("timeline:access_token:#{id}", payload)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2017-01-15 13:01:33 +00:00
|
|
|
end
|