2016-07-16 2 views
3

내 Rails 5 프로젝트에서 Devise를 사용하고 있으며 임시로 새로운 사용자 등록을 비활성화하고 싶습니다. 보기의 링크를 제거하거나 경로 파일을 편집하여이 작업을 수행 할 수는 있지만 새 배치를 사용하여 코드를 변경해야합니다. 새 사용자가 일정 기간 동안 등록 할 수 없게하려면 관리 콘솔에 옵션을 추가하고 싶습니다.Devise의 등록 일시 중지

이 기능을 사용하도록 설정했으나 해킹이 발생했습니다. 사람들이 등록 할 수있는 기능을 사용하지 않도록 설정하면, 현재 내가 수행하는 모든 작업은 개발자 관점에서 '새 사용자 등록'링크를 숨기는 것입니다. 기본 경로를 아는 사람이라면 누구나이 문제를 해결할 수 있습니다.

어떻게 런타임에이 기능을 변경할 수 있습니까?

답변

4

따르기 This Devcs의 등록 컨트롤러를 재정의하기위한 링크. 기본적으로 Devise의 기본 등록 컨트롤러를 덮어 쓰고 작업의 필터를 입력해야합니다. 관리자가 root_path 또는 원하는 경로로 리디렉션하지 않으면 새 사용자를 만들 수 있는지 확인합니다.

알터 등록 컨트롤러 오버라이드 (override)하는 설정/routes.rb에서 devise_for 라인 :

devise_for :users, controllers: { registrations: "registrations"} 

응용 프로그램/컨트롤러/registrations_controller.rb는 :

class RegistrationsController < Devise::RegistrationsController 

    before_action :check_new_registration_allowed?, only: [:new, :create] 

    protected 

    def check_new_registration_allowed? 
    redirect_to root_path unless @@allow_new_registration 
    end 

end 

나는 글로벌 @@allow_new_registration를 사용하는 것을 주목하십시오 새로운 등록이 허용되는지 확인하기위한 변수. 관리자 조치 후이 기능을 켜거나 끌 수 있습니다. 또는 이러한 정보를 DB에 저장하고 쿼리하면 좋을 것입니다.

+0

Upvoted & 답변으로 표시. 이것을 보내 주셔서 감사합니다 - 매우 도움이됩니다! – dingalingchickenwiing

관련 문제