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>
47 lines
1.2 KiB
Ruby
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
|