Вы можете сделать что-нибудь на основе файлов cookie.
В вашем ApplicationController
вы бы внедрили метод определения наличия файла cookie, который указывает, что посетитель ввел ваш пароль - если файл cookie отсутствует, вы будете перенаправлены на страницу пароля:
class ApplicationController < ActionController::Base
def require_password_verification
unless cookies[:visitor_password_verified]
return redirect_to <whatever your passwords#new path is>
end
end
end
Контроллер для вашей страницы пароля будет выглядеть примерно так:
class PasswordController < ApplicationController
def new
# Nothing needed here because all your #new view needs is a password field
end
def create
unless params[:password].present?
return redirect_back(fallback_location: root_path, alert: 'Password is required.')
end
if params[:password] == Rails.configuration.visitor_password
cookies[:visitor_password_verified] = true
redirect_to(root_path, notice: 'Password verified.')
else
cookies.delete(:visitor_password_verified)
redirect_back(fallback_location: root_path, alert: 'You've entered the wrong password.')
end
end
end
Ваш пароль будет храниться в файле application.rb
, например:
config.visitor_password = '12345'
Обычно вы никогда бы не хранили пароль таким образом, потому что он вообще не защищен, но, учитывая ваш случай использования, это, вероятно, хорошо, так как наличие одного пароля для всех уже небезопасно. ? Однако, если вы захотите повысить уровень безопасности, я бы порекомендовал сохранить ваш пароль в переменной среды, а затем вы можете установить пароль следующим образом:
config.visitor_password = ENV['VISITOR_PASSWORD']
Таким образом, по крайней мере, ваш пароль не будет жестко запрограммирован и доступен для любого, кто смотрит на ваше, предположительно общедоступное репо.
И тогда вы можете потребовать куки "пароль был введен" для любых просмотров, которые вы хотите, так:
class LeagueStatsController < ApplicationController
before_action :require_password_verification
def index
# Whatever
end
end
Если кто-то заходит на вашу страницу league_stats#index
, то он сначала проверит, чтобы убедиться, что файл cookie visitor_password_verified
присутствует и имеет значение true. Если это так, то они дойдут до вида. Если это не так, они будут перенаправлены на вашу страницу passwords#new
.