# frozen_string_literal: true
class DashboardController < ApplicationController
before_action :authenticate_user!
before_action :load_communities, unless: -> { controller_name == "dashboard" && action_name == "index" }
before_action :check_for_access, if: -> { controller_name != "dashboard" }
def index
end
def player_dashboard
redirect_to edit_user_path(current_user.discord_id)
end
protected
def current_context
current_community || current_user
end
def current_community
@community
end
def load_communities
@communities = current_user.admin_communities
end
def check_for_access
return if (params[:user_id] || params[:id]) == current_user.discord_id
@community = Community.find_by(public_id: params[:community_id] || params[:id])
return if current_community&.modifiable_by?(current_user)
respond_to do |format|
format.html { redirect_to root_path, alert: "You are not allowed to view that page" }
format.json { render json: {}, status: :unauthorized }
end
end
def redirect_if_player_mode
return redirect_to communities_path if current_community.nil?
return unless current_community.player_mode_enabled?
redirect_to edit_community_path(current_community.public_id),
alert: "Player mode is enabled on this community. You cannot access this page with it enabled."
end
def redirect_if_not_player_mode
return redirect_to communities_path if current_community.nil?
return if current_community.player_mode_enabled?
redirect_to edit_community_path(current_community.public_id),
alert: "Player mode is not enabled on this community. You cannot access this page with it disabled."
end
def check_failed!(opts = {})
respond_to do |format|
format.html do
flash[:error] = opts[:message]
redirect_to opts[:redirect_to] || root_path
end
format.json { render json: {message: opts[:message]}, status: opts[:status] || :bad_request }
end
Rails.logger.error { opts[:message] }
true
end
end