cleanup auth, start bot
This commit is contained in:
		| @@ -1,4 +1,23 @@ | |||||||
| class ApplicationController < ActionController::Base | class ApplicationController < ActionController::Base | ||||||
|   # Only allow modern browsers supporting webp images, web push, badges, import maps, CSS nesting, and CSS :has. |   # Only allow modern browsers supporting webp images, web push, badges, import maps, CSS nesting, and CSS :has. | ||||||
|   allow_browser versions: :modern |   allow_browser versions: :modern | ||||||
|  |  | ||||||
|  |   def authenticate | ||||||
|  |     unless authenticate_api_key? | ||||||
|  |       unauthorized_response | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  |  | ||||||
|  |   def authenticate_api_key? | ||||||
|  |     api_key = request.headers["X-API-KEY"] | ||||||
|  |     if api_key.present? && ApiKey.exists?(key: api_key) | ||||||
|  |       @apikey = ApiKey.find_by(key: api_key) | ||||||
|  |       return true | ||||||
|  |     end | ||||||
|  |     false | ||||||
|  |   end | ||||||
|  |  | ||||||
|  |   def unauthorized_response | ||||||
|  |     render json: { error: "API key is missing or empty" }, status: :unauthorized | ||||||
|  |   end | ||||||
| end | end | ||||||
|   | |||||||
							
								
								
									
										16
									
								
								app/controllers/bot_controller.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								app/controllers/bot_controller.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | |||||||
|  | class BotController < ApplicationController | ||||||
|  |   skip_before_action :verify_authenticity_token | ||||||
|  |   before_action :authenticate | ||||||
|  |  | ||||||
|  |   def players | ||||||
|  |  | ||||||
|  |   end | ||||||
|  |  | ||||||
|  |   def summary | ||||||
|  |  | ||||||
|  |   end | ||||||
|  |  | ||||||
|  |   def player_name | ||||||
|  |  | ||||||
|  |   end | ||||||
|  | end | ||||||
| @@ -1,5 +1,6 @@ | |||||||
| class GameController < ApplicationController | class GameController < ApplicationController | ||||||
|   skip_before_action :verify_authenticity_token, only: [ :create ] |   skip_before_action :verify_authenticity_token, only: [ :create ] | ||||||
|  |   before_action :authenticate, only: [ :create ] | ||||||
|  |  | ||||||
|   respond_to? :json |   respond_to? :json | ||||||
|   def index |   def index | ||||||
| @@ -11,11 +12,6 @@ class GameController < ApplicationController | |||||||
|   end |   end | ||||||
|  |  | ||||||
|   def create |   def create | ||||||
|     unless authenticate_api_key? |  | ||||||
|       unauthorized_response |  | ||||||
|       return |  | ||||||
|     end |  | ||||||
|  |  | ||||||
|     game_params[:timestamp] = Time.at(params[:timestamp].to_i).utc if params[:timestamp].present? |     game_params[:timestamp] = Time.at(params[:timestamp].to_i).utc if params[:timestamp].present? | ||||||
|     if Game.find_by(timestamp: game_params[:timestamp]) |     if Game.find_by(timestamp: game_params[:timestamp]) | ||||||
|       already_reported_response |       already_reported_response | ||||||
| @@ -59,19 +55,6 @@ class GameController < ApplicationController | |||||||
|     params.require(:game).permit(:timestamp, :gametype, :wager, :winner, :loser, :high_roll, :low_roll, :payout) |     params.require(:game).permit(:timestamp, :gametype, :wager, :winner, :loser, :high_roll, :low_roll, :payout) | ||||||
|   end |   end | ||||||
|  |  | ||||||
|   def authenticate_api_key? |  | ||||||
|     api_key = request.headers["X-API-KEY"] |  | ||||||
|     if api_key.present? && ApiKey.exists?(key: api_key) |  | ||||||
|       @apikey = ApiKey.find_by(key: api_key) |  | ||||||
|       return true |  | ||||||
|     end |  | ||||||
|     false |  | ||||||
|   end |  | ||||||
|  |  | ||||||
|   def unauthorized_response |  | ||||||
|     render json: { error: "API key is missing or empty" }, status: :unauthorized |  | ||||||
|   end |  | ||||||
|  |  | ||||||
|   def already_reported_response |   def already_reported_response | ||||||
|     render json: { error: "Already reported this gambo" }, status: :already_reported |     render json: { error: "Already reported this gambo" }, status: :already_reported | ||||||
|   end |   end | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								app/helpers/bot_helper.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								app/helpers/bot_helper.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | module BotHelper | ||||||
|  | end | ||||||
| @@ -22,4 +22,9 @@ Rails.application.routes.draw do | |||||||
|  |  | ||||||
|   # Discord |   # Discord | ||||||
|   match "discord" => redirect("https://discord.gg/hQShdPMy7p"), via: [ :get ] |   match "discord" => redirect("https://discord.gg/hQShdPMy7p"), via: [ :get ] | ||||||
|  |  | ||||||
|  |   # Bot | ||||||
|  |   get "bot/players" => "bot#players" | ||||||
|  |   get "bot/player/:id" => "bot#player_name" | ||||||
|  |   get "bot/summary" => "bot#summary" | ||||||
| end | end | ||||||
|   | |||||||
							
								
								
									
										7
									
								
								test/controllers/bot_controller_test.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								test/controllers/bot_controller_test.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | require "test_helper" | ||||||
|  |  | ||||||
|  | class BotControllerTest < ActionDispatch::IntegrationTest | ||||||
|  |   # test "the truth" do | ||||||
|  |   #   assert true | ||||||
|  |   # end | ||||||
|  | end | ||||||
		Reference in New Issue
	
	Block a user