2016-11-04 3 views
0

사용자 모델에 'authorized'라는 부울 필드를 추가 한 레일 어플리케이션이 있습니다. 기본적으로 권한이 부여 된 사용자 만 앱에 액세스 할 수 있도록 앱을 잠그고 싶습니다. 내 응용 프로그램 컨트롤러에서이 작업을 수행하려고 :devise에서 승인 된 플래그 확인하기

class ApplicationController < ActionController::Base 
    protect_from_forgery with: :exception 

    def authorized 
    redirect_to root_path, alert: "Not Authorized" if !current_user.authorized? 
    end 

end 

을 그러나, 나는 인증이 필요한 경로로 설정 루트 경로가 나는이 작업을 수행 할 때이 리디렉션 오류가 발생하고있다.

이제보기 또는 다른 컨트롤러에서이 검사를 수행 할 수 있지만 전체 응용 프로그램을 잠 그려면 응용 프로그램 컨트롤러에서 수행하고 싶습니다.

+0

작성된 스 니펫은 사용자를 th로 리디렉션합니다. e 현재 사용자에게 권한이 부여 된 경우 root_path. 그 맞습니까? –

+0

Opps! 당신은 정확합니다 ... 지금 고쳐졌습니다. – Lumbee

답변

0

여기이었다 내 솔루션 ... 내가 추가 한 '공인'인증을 원하는 컨트롤러에서

... 내 경로에서

before_filter :authorized, :except => :not_authorized 

... 

def authorized 
    if !current_user.authorized? 
     redirect_to not_authorized_path 
    end 
end 

, 내가 추가 ..

get 'not_authorized' => 'my_controller#not_authorized' 

... 간단한 app/views/my_controller/not_authorized.html.erb를 추가했습니다.

0

사용자 모델에서이 메서드를 재정의 할 수 있습니다.

def active_for_authentication? 
    super && approved? 
    end 

    def inactive_message 
    'my custom inactive message' unless approved? 
    super 
    end 

나는 잘 모르겠어요 있지만 내부 고안 메소드 이름과 같은 소리를 허가는 승인에 의해 권한이 부여 된 이름을 변경하는 것이 좋습니다.

관련 문제