class BoardChannel < ApplicationCable::Channel
  def subscribed
    board = Board.find_by(id: params[:board_id])
    unless board
      reject
      return
    end

    current_participant = board.game.participants.find_by(user: current_user)

    # ゲーム参加者でなければ一律拒否
    unless current_participant
      reject
      return
    end

    # 権限判定：共通掲示板/公開掲示板/メンバー/履歴モードのいずれかで許可
    if board.global? || board.is_public? || board.member?(current_participant) || board.history_mode?
      stream_from "board_#{board.id}"
    else
      reject
    end
  end

  def unsubscribed
    # cleanup
  end
end
