2015-02-03 2 views
0

승인에 대한 도움이 필요합니다. 지금까지 나는 내부 레일 승인과 장치를 결합하여 해결하려고 노력했습니다. 요청을 게시하는 사용자가 있습니다. 이 요청이 비공개 인 경우 "리더"그룹 만 요청을보고 답변 할 수 있습니다. (1 위)소유권 및 여러 수준의 승인

그런 다음 사용자는 독자의 답변에 등급을 지정합니다. 응답을받은 사용자와 응답 한 "독자"에게만 액세스 할 수 있어야합니다.

은 지금까지 나는 숨겨진 요청에 대한 액세스를 제한하려면 다음 사용했다 :

before_filter :require_reader!, only: [:open_requests] 

그러나 요청이 숨겨져 있지 않은 경우, 여전히보다 만 독자가 요청에 응답 할 수 있어야한다

(그러나 모두가 할 수있는 그것을보십시오). 여기 나는 이것을 어떻게 관리해야할지 모른다. 어떤 아이디어?

계속하려면 ... 두 번째 문제를 해결할 수 없었습니다 (등급은 요청과 독자를 배치 한 사람 만 볼 수 있습니다). 아이디어가 있으십니까?

cancancan은 옵션일까요?

최저 witali

+0

"독자"그룹을 정의 할 때 무엇을 사용하고 있습니까? Devise는 사용자를 인증하는 데 사용되어 자신이 누구인지 알지만 일부 논리 또는 다른 라이브러리는 그룹 구성원 및 권한을 관리하는 데 사용해야합니다. – LisaD

+0

Cancancan 또는 xacml은 갈 방법입니다. –

+0

@LisaD : www.railsbricks.net 생성기 (정말 멋집니다!)를 사용하고 있으며 관리 기능이 제공됩니다. 나는 이것을 "독자"에게 적용했다. 그러나 질문은 기능 (게시 및보기)을 어떻게 제한합니까? 누구나 볼 수 있지만 "리더"만 대답을 게시 할 수 있습니다 .. DavidBrossard : 감사합니다. xacml을 확인합니다. – ertix4248

답변

0

당신이 아주 많이 Railsbricks 같은 도구를 설치 년대 '관리자'패턴을 따르지 않는 일을하고 있습니다. 'admin'권한 패턴은 일반적으로 관리자 만 사용할 수있는 일련의 작업 /보기이므로 일반적으로 전체 컨트롤러 또는 컨트롤러 제품군에는 : require_admin! 모든 단일 작업 및보기 전에 필터가 적용됩니다. 매우 간단한 사용 권한 논리이며 사용자와보기에만 의존합니다.

대신 사용자의 상태 및보기뿐만 아니라 개체의 상태에 따라 사용 권한이있는보기가 있습니다. 따라서 'require_reader!'대신에 사용할 필터를 작성해야합니다.

예를 들어, 당신은 RequestsController가있을 수 있습니다, 당신은 그것을 추가 할 수 있습니다 같은 필터를 사용해야하는 경우

private 
    def must_be_able_to_view_request 
    if !current_user.is_reader? && [email protected] 
     head :forbidden 
    end 
    end 

:

before_action :must_be_able_to_view_request, except: [:index, :new, :create] 

그런 다음 컨트롤러에서 해당 필터를 정의 다른 컨트롤러에서는 ApplicationController에서 정의 할 수 있습니다.

+0

전체 컨트롤러에 맞습니다. 좋은 지적입니다. 필터 옵션을 시험해보고 결과가있을 때 알려 드리겠습니다. 도와 주셔서 대단히 감사합니다! – ertix4248