2014-04-28 2 views
0

특정 컨트롤러에 대해 읽기 전용으로 작성, 업데이트 및 삭제와 같은 작업이 필요한 레일즈에서 API를 디자인하고 다른 사용자를 위해 공개 할 수 있습니다 (예 : 기사에 대한 주석이 있어야 함). 공개하지만 편집하려면 API 인증이 필요함)API 컨트롤러 작업을 읽기 전용으로 만드는 방법

나는 인증 부분을 수행하는 방법을 알고 있습니다. 어떻게 해야할지 모르겠지만 "읽기 전용"부분 또는 "댓글을 작성할 수있는 권한이 있지만 그것을 삭제하지 마십시오 "부분.

이 작업을 수행하는 데 필요한 리소스, 팁, 트릭 또는 github 리포지토리가 있습니까?

답변

0

승인을 받아야합니다. 확장 성있는 솔루션을 보려면 Pundit을 찾으십시오. https://github.com/elabs/pundit

제한된 2 개의 컨트롤러에만 몇 가지 방법 만 있었기 때문에 약간의 컨트롤이 필요했습니다. 그 사람들을 위해 난 그냥 before_filter 및 인증을 제어하는 ​​메서드를 만들었습니다.

아래의 코드는 모든 사람이 색인을 수행하고 "admin"값을 가진 역할 속성이있는 사용자 만 컨트롤러에서 다른 작업을 수행 할 수 있도록 허용합니다. 또한 권한이 부여되지 않은 오류를 발생 시키거나 리디렉션하지 않고 오류 메시지를 표시하도록 선택할 수 있습니다. 집의 보안 측면에 기사 (아마도 책)가 있습니다. 사용자가 무언가를 할 권한이 없다는 사실을 사용자에게 알려 주어야하는지 (즉, 누군가가 URI에서 할 수있는 것이 있다는 것을 의미 할 수 있음)

관리자

class User < ActiveRecord::Base 
    def admin? 
    if self.role == "admin" 
     true 
    else 
     false 
    end 
    end 
end 
을 확인 당신이 고안해야합니다 과정 또는 CURRENT_USER 방법 및 사용자에 대한 방법의
SomeController < ApplicationController 
    before_filter check_authorized, except [:index] 

    def index 
    ....stuff that everyone can do 
    end 

    def delete 
    ....stuff only admin can do 
    end 

    private 

    def check_authorized 
    redirect_to root_path unless current_user.admin? 
    end 
end 

관련 문제