Integrazione YouTube Live: OAuth squadra, canale piattaforma Light e UI.
Collegamento da Dettagli squadra e admin per il refresh token Match Live TV; API e app mobile allineate ai piani Light/Full. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
39
backend/app/services/youtube/oauth_state.rb
Normal file
39
backend/app/services/youtube/oauth_state.rb
Normal file
@@ -0,0 +1,39 @@
|
||||
module Youtube
|
||||
class OauthState
|
||||
PURPOSE = :youtube_oauth_connect
|
||||
|
||||
class << self
|
||||
def for_team(team_id:, user_id:)
|
||||
verifier.generate([team_id.to_s, user_id.to_s], 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] }
|
||||
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
|
||||
Reference in New Issue
Block a user