Billing Stripe, link regia mobile e staff solo trasmissione.
Aggiunge fatturazione club, pagina regia condivisibile senza account, roster squadre e rimuove la modalità controller dall'app (v1.1.0). Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
65
backend/app/services/sessions/regia_access.rb
Normal file
65
backend/app/services/sessions/regia_access.rb
Normal file
@@ -0,0 +1,65 @@
|
||||
module Sessions
|
||||
class RegiaAccess
|
||||
DEFAULT_TTL = 12.hours
|
||||
|
||||
def initialize(session)
|
||||
@session = session
|
||||
end
|
||||
|
||||
# Genera un nuovo link (invalida quello precedente).
|
||||
def issue_token!
|
||||
rotate!
|
||||
end
|
||||
|
||||
def rotate!
|
||||
token = SecureRandom.urlsafe_base64(24)
|
||||
expires = [DEFAULT_TTL.from_now, session_end_cap].compact.min
|
||||
@session.update!(
|
||||
regia_token_digest: digest(token),
|
||||
regia_token_expires_at: expires
|
||||
)
|
||||
token
|
||||
end
|
||||
|
||||
def url(token)
|
||||
"#{MatchLiveTv.app_public_url.chomp('/')}/regia/#{token}"
|
||||
end
|
||||
|
||||
def self.find_session_by_token(token)
|
||||
return if token.blank?
|
||||
|
||||
session = StreamSession.find_by(regia_token_digest: digest(token))
|
||||
return unless session
|
||||
return if session.regia_token_expires_at.blank? || session.regia_token_expires_at.past?
|
||||
return if session.terminal?
|
||||
|
||||
session
|
||||
end
|
||||
|
||||
def self.revoke!(session)
|
||||
session.update!(regia_token_digest: nil, regia_token_expires_at: nil)
|
||||
end
|
||||
|
||||
def self.digest(token)
|
||||
Digest::SHA256.hexdigest(token.to_s)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def token_valid?
|
||||
@session.regia_token_digest.present? &&
|
||||
@session.regia_token_expires_at&.future? &&
|
||||
!@session.terminal?
|
||||
end
|
||||
|
||||
def session_end_cap
|
||||
return nil unless @session.started_at
|
||||
|
||||
@session.started_at + 8.hours
|
||||
end
|
||||
|
||||
def digest(token)
|
||||
self.class.digest(token)
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user