2011-12-05 2 views
3

레일 3.0.10을 사용하고 있으며 현재 사용자가 응용 프로그램 내에서 가지고있는 다른 능력을 결정하기 위해 CanCan을 사용하고 있습니다.레일 관리자 - 다른 사용자되기

사용자 인증 자체에 Devise를 사용하고 있습니다.

CanCan을 사용하여 임시로 다른 사용자가 "될"수있는 좋은 방법이 있습니까? 이는 자신의 계정과 관련된 고유 한 문제가 발생할 수있는 특정 사용자가되는 데 특히 유용합니다.

간단히 말해서 나는 주어진 사용자로 로그인하여보고있는 것을 볼 수 있기를 원합니다. CanCan 또는 Devise 기능이 있는지 확실하지 않습니다.

UPDATE는

난 그냥이 건너 온 :

How-To: Sign in as another user if you are an Admin합니다.

아직 테스트하지는 않았지만 찾고 있던 답변 일 수도 있습니다 !! 이것이 당신이 취한 접근 방법이거나 다른 생각이 있다면 약간의 통찰력을 제공하십시오!

답변

4

에 따라 사용자 정의 페이지를 생성하고, 보석 그것을 위해 거기 수 있습니다!

switch_user

정말 사용하기 쉬웠다. gemfile에 gem switch_user을 추가하면됩니다.

다음 내 레이아웃에 <%= switch_user_select %>을 추가하십시오. 정확히 내가 원했던 것!

0

CanCan은 인증에 대한 귀하의 의지입니다. warden (예 : devise)을 기반으로하는 항목을 사용하는 경우 at the bottom. 관리자 사용자를 저장하는 범위 (예 : :admin)를 만듭니다. #set_user을 통해 개성화 할 사용자를 설정하십시오. 위의 링크를 참조하십시오.

+0

충분한 정보를 제공하지 못해 죄송합니다. 방금 내 질문을 업데이트했습니다. 나는 사용자 인증을 위해 Devise를 사용하고 능력을 결정하기 위해 CanCan을 사용하고 있습니다. 본질적으로, 나는 단순히 다른 사용자로 로그인하여보고있는 것을 볼 수 있지만 여전히 관리 인터페이스로 돌아가는 버튼이 있어야합니다. – ardavis

0

유증은 사용자가 앱에서 보는 것과 관련이없는 경우, 아마 당신은이 라인을 따라 뭔가 할 수있는 :

1) 관리자가 아닌 사용자

2) 시험 경우를위한 새로운 능력을 만듭니다 사용자가 할 또는 일

3 참조) 내가 찾던 발견이 능력

ability = Ability.new(@user) 
Rails.logger.debug("* ability.can?(:update, @user):#{ability.can?(:update, @user)}") # see if user can access the user 
Rails.logger.debug("* User.accessible_by(ability):#{User.accessible_by(ability).inspect.to_s}") # see if returns the records the user can access 
Rails.logger.debug("* to_sql:#{User.accessible_by(ability).to_sql}") # see what the generated SQL looks like 
관련 문제