29 lines
688 B
Ruby
29 lines
688 B
Ruby
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
|