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:
2026-05-29 07:23:13 +02:00
parent 4083bc5dee
commit f4b7be0f80
156 changed files with 5033 additions and 2033 deletions

View File

@@ -1,8 +1,14 @@
module ApplicationCable
class Connection < ActionCable::Connection::Base
identified_by :current_user
identified_by :current_user, :regia_session
def connect
if (regia_token = request.params[:regia_token].presence)
self.regia_session = Sessions::RegiaAccess.find_session_by_token(regia_token)
reject_unauthorized_connection unless regia_session
return
end
payload = JsonWebToken.decode(token_from_header)
self.current_user = User.find_by(id: payload[:user_id]) if payload
reject_unauthorized_connection unless current_user

View File

@@ -1,19 +1,31 @@
class SessionChannel < ApplicationCable::Channel
include CableBroadcastable
def subscribed
session = StreamSession.joins(match: :team)
.merge(current_user.manageable_teams)
.find(params[:session_id])
session = resolve_session
reject unless session && session.id.to_s == params[:session_id].to_s
stream_for session
session.device_states.find_or_create_by!(device_role: params[:device_role] || "controller")
end
def resolve_session
if connection.regia_session
connection.regia_session
else
StreamSession.joins(match: :team)
.merge(connection.current_user.manageable_teams)
.find_by(id: params[:session_id])
end
end
def unsubscribed
stop_all_streams
end
def receive(data)
session = StreamSession.find(params[:session_id])
session = resolve_session
return unless session
handle_message(session, data)
end