Add route and controller for incoming messages

This commit is contained in:
sto 2025-05-11 21:09:45 +02:00
parent 2f23938e81
commit 70005468c6
3 changed files with 30 additions and 0 deletions

View File

@ -0,0 +1,25 @@
class MessagesController < ApplicationController
allow_unauthenticated_access
skip_before_action :verify_authenticity_token
def create
skip_authorization
@message_params = message_params
@contest = Contest.find_by_token_for(:token, params[:token])
@message = Message.new(text: params[:text], time_seconds: params[:time_seconds], contest: @contest)
if @contest && @message.save
respond_to do |format|
format.json { render json: {}, status: 200 }
end
else
respond_to do |format|
format.json { render json: { error: "invalid contest token" }, status: 400 }
end
end
end
def message_params
params.expect(message: [ :text, :time_seconds, :token ])
end
end

View File

@ -27,8 +27,11 @@ class Contest < ApplicationRecord
has_many :completions, dependent: :destroy
has_many :contestants, dependent: :destroy
has_many :puzzles, dependent: :destroy
has_many :messages
friendly_id :name, use: :slugged
validates :name, presence: true
generates_token_for :token
end

View File

@ -17,5 +17,7 @@ Rails.application.routes.draw do
resource :session
resources :users
post "message", to: "messages#create"
get "public/:id", to: "contests#scoreboard"
end