프로덕션 환경 전용 Devise 등록 비활성화
일부 사용자 그룹을 대상으로 베타 사이트를 시작하고 있습니다. 프로덕션 환경에서만 등록을 비활성화하고 짧은 기간 동안 만 사용하고 싶습니다 (즉, 등록을 완전히 핵으로 만들고 싶지 않음). 단순히 "가입"링크를 숨길 수 있다는 것을 알고 있지만 등록을 수행하기 위해 RESTful 경로를 사용할 수있는 것보다 해커가 더 똑똑하다고 생각합니다. 테스트 / 개발 환경은 계속 작동하지만 프로덕션에 영향을 미치도록 등록을 비활성화하는 가장 좋은 방법은 무엇입니까? 어떤 조언을 해주셔서 감사합니다.
"sign_up"이 "sign_in"으로 이동하는 방식으로 명명 된 범위를 가리 키려고 시도했지만 작동하지 않았습니다. 내가 시도한 것은 다음과 같습니다.
devise_scope :user do
get "users/sign_in", :to => "devise/sessions#new", :as => :sign_in
get "users/sign_up", :to => "devise/sessions#new", :as => :sign_up
end
이상적으로는 사용자를 "pages # registration_disabled"페이지 또는 이와 유사한 페이지로 보내는 것이 좋습니다. 그냥 가지고 놀 수있는 무언가를 얻고 싶었습니다.
편집 : 요청한대로 모델을 변경 한 다음 /spec/user_spec.rb에 다음을 추가했습니다.
describe "validations" do
it "should fail registration if in production mode" do
ENV['RAILS_ENV'] = "production"
@user = Factory(:user).should_not be_valid
end
end
거짓이 아니라 "참"으로 전달됩니다. 프로덕션 환경을 모형화하는 방법이 있습니까? 이건 그냥 뱉어 내고 있어요.
감사!
다른 사람들이 내가 가진 문제를 겪고 있기 때문에 (내 의견 참조). 정확히 어떻게 수정했는지 보여줍니다. 머피 슬로의 아이디어를 사용했습니다. 그러나 devise가 등록 라우팅을 위해 새 컨트롤러를 사용하는지 확인해야합니다. 그렇지 않으면 많은 작업을 수행하지 않습니다.
내 컨트롤러 재정의는 다음과 같습니다.
class RegistrationsController < Devise::RegistrationsController
def new
flash[:info] = 'Registrations are not open yet, but please check back soon'
redirect_to root_path
end
def create
flash[:info] = 'Registrations are not open yet, but please check back soon'
redirect_to root_path
end
end
등록 페이지가 작동하지 않는 이유를 어떻게 든 우연히 발견하는 사람에게 알리기 위해 플래시 메시지를 추가했습니다.
여기에 내 routes.rb
if Rails.env.production?
devise_for :users, :controllers => { :registrations => "registrations" }
else
devise_for :users
end
컨트롤러 해시는 재정의 된 등록 컨트롤러를 사용하도록 지정합니다.
어쨌든 누군가 시간을 절약하기를 바랍니다.
user
모델을 편집 하고 제거 :registerable
하면 원하는 것을 얻을 수 있다고 생각합니다.
편집하다:
나는 이것이 효과가 있다고 생각한다.
if Rails.env.production?
devise :database_authenticatable, :recoverable, :rememberable, :trackable, :validatable
else
devise :database_authenticatable, :recoverable, :rememberable, :trackable, :validatable, :registerable
end
제거 :registerable
만하면 문제가 해결되지 않습니다. 보기에 일부 경로가 있으면 오류가 발생합니다.
undefined local variable or method 'edit_user_registration_path'
이거 알아서.
Devise :: RegistrationsController 및 create 작업을 재정 의하여 원하는 페이지로 리디렉션 할 수 있습니다. 컨트롤러는 아마도 다음과 같이 보일 것입니다.
class User::RegistrationsController < Devise::RegistrationsController
def create
redirect_to your_page_path if Rails.env.production?
end
end
'IT박스' 카테고리의 다른 글
Ruby의 cURL과 동일합니까? (0) | 2020.11.03 |
---|---|
여러 배열 요소를 설정 해제하는 더 나은 방법 (0) | 2020.11.03 |
설치 후 Android Studio를 시작할 수 없습니다. (0) | 2020.11.03 |
양식을 제출할 때 모든 POST 결과를 인쇄하려면 어떻게합니까? (0) | 2020.11.03 |
Java Switch Statement- "or"/ "and"가 가능합니까? (0) | 2020.11.03 |