레드마인(Redmine) 플러그인 개발 가이드 - 6. 접근 권한(permission) 설정

by Tom posted Dec 30, 2015
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
이 문서는 Redmine 2.x 기반의 플러그인 개발 가이드입니다. 그리고 이 문서는 redmine.org의 플러그인 개발 가이드를 번역하였습니다. 

6. 접근 권한(permission) 설정

현재까지의 가이드에 따르면 프로젝트에 접근한 누구라도 투표(Poll)를 할 수 있습니다. 하지만 플러그인에서는 상황에 따라 퍼미션 설정을 변경하여 접근할 수 있는 권한을 조절할 수 있어야 합니다. 

이 예제에서는 두 개의 프로젝트의 퍼미션을 조절합니다. 하나는 투표를 볼 수 있는 권한(view_polls)과 다른 하나는 투표를 할 수 있는 권한(vote_polls)을 줄 것 입니다.

먼저 접근 권한 설정을 하기 위해서 public 옵션을 삭제합니다. 

plugins/polls/init.rb을 Editor로 열고 아래의 두 문장의 이전 설정을 다음과 같이 수정합니다. 

 permission :view_polls, :polls => :index
 permission :vote_polls, :polls => :vote

어플리케이션을 재시작하고 다음 링크를 실행합니다. 

  • http://localhost:3000/roles/permissions

이 페이지를 통해서는 플러그인의 접근 권한을 설정할 수 있습니다. 

물런 몇몇 코드는 PollsController에 추가되어야 합니다. 액션들은 현재 사용자의 접근 권한에 따라 실제로 보호되어야 합니다. 이를 위해 우리는 :authorize 필터를 추가할 필요가 있습니다. 그리고 이 필터가 호출되기 전에 @project 인스턴스 변수를 적절하게 설정해야 합니다. 

다음은 #index 액션을 어떻게 해야하는지 보여줍니다.

class PollsController < ApplicationController
  unloadable

  before_filter :find_project, :authorize, :only => :index

  [...]

  def index
    @polls = Poll.find(:all) # @project.polls
  end

  [...]

  private

  def find_project
    # @project variable must be set before calling the authorize filter
    @project = Project.find(params[:project_id])
  end
end

실질적으로 #vote 액션이 수행되기 전에 프로젝트는 검색되어져야 합니다. 그리고 그 이후에 해당 프로젝트의 적절한 역할을 가진 관리자 혹은 사용자가 투표를 보거나 투표를 수행할 수 있어야 합니다. 

만약에 다중언어에서 접근권한 설정을 보여주기를 원한다면, 언어 파일에 텍스트 라벨을 추가하는 것은 필수 입니다. 먼저 plugins/polls/config/locales에 *.yml(예 en.yml) 파일을 만들고, 그 언어 파일에 다음과 같이 필요한 텍스트 라벨을 추가합니다. 

"en":
  permission_view_polls: View Polls
  permission_vote_polls: Vote Polls

이 예제에서는 영어에 대한 언어파일을 만들었지만 같은 방법으로 다른 언어도 만들 수 있습니다.   

이번 예제에서 :view_polls와 :vote_polls의 퍼미션 심볼을 구성했습니다. 이제 어플리케이션을 재시작하고 퍼미션 설정을 다시 확인합니다.