Files
MatchLiveTv/backend/app/services/youtube/oauth_state.rb
Emiliano Frascaro 566104aff4 Billing upgrade/downgrade, inviti in app e diretta YouTube da mobile.
Upgrade Stripe con addebito immediato; downgrade programmato a fine periodo.
UX billing più sobria con box info; icone piani. API inviti e OAuth YouTube
per staff trasmissione; deep link join; scelta partita programmata o nuova.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-02 22:15:27 +02:00

47 lines
1.2 KiB
Ruby

module Youtube
class OauthState
PURPOSE = :youtube_oauth_connect
class << self
def for_team(team_id:, user_id:, return_app: false)
payload = [team_id.to_s, user_id.to_s]
payload << "app" if return_app
verifier.generate(payload, expires_in: 1.hour)
end
def for_platform(admin_id:)
verifier.generate(["platform", admin_id.to_s], expires_in: 1.hour)
end
def verify!(token)
payload = verifier.verify(token)
case payload
when Array
if payload.first == "platform"
{ kind: :platform, admin_id: payload[1] }
elsif payload.size >= 2
{
kind: :team,
team_id: payload[0],
user_id: payload[1],
return_app: payload[2] == "app"
}
else
raise ArgumentError, "stato OAuth non valido"
end
else
raise ArgumentError, "stato OAuth non valido"
end
rescue ActiveSupport::MessageVerifier::InvalidSignature
raise ArgumentError, "stato OAuth scaduto o non valido"
end
private
def verifier
Rails.application.message_verifier(PURPOSE)
end
end
end
end