2011-01-07 3 views
1

레일 3 앱을 구축 중이며 Company 사용자가 각 PM에 대한 특정 역할을 결정하는 정교한 사용자 권한 도구에 대한 디자인 작업을하고 있습니다.이 사용자 권한 설정이 의미가 있습니까?

이 시나리오를 생각해보십시오. 회사는 세 가지 유형의 데이터를 통해 특정 역할을 설정하려고합니다.

  • 프로젝트 테이블
  • 클라이언트 테이블
  • 기업 계정 (예 : 회사 테이블)

나는이 필드 역할 다형성 테이블을 추가 할 생각입니다 : (

  • USER_ID all_users == true가 아닌 한이 역할이 적용되는 사용자)
  • (예 : all_items == true)
  • item id (위와 동일)
  • 역할 (예 : "read", "edit", "destroy"등의 항목 유형 (예 : "Project", "Client" ", 또는"사용자 정의 ")
  • ALL_USERS (부울 :이 항목의 역할은 모든 사용자에게 적용 않음)
  • ALL_ITEMS (부울 :이 사용자의 역할은 모든 항목에 적용 않음)
  • COMPANY_ID ('소유 회사 '이 역할)

나는 CanCan이 이것을 달성하는 좋은 방법 일 것이라고 생각하지만, 여기있다. 내 질문. 1. 위의 테이블은이를 수행하는 좋은 방법입니까? 2. CanCan이 이와 연계하여 효과적인 솔루션을 만들 수 있습니까?

답변

0

테이블이 매우 복잡한 인증 체계를 구현하는 현명한 방법 인 것처럼 보이며, 이는 사용자가 겪은 것처럼 보입니다.

CanCan이가는 한, 그렇습니다. 이걸 완벽하게 묶을 것입니다. 모든 CanCan은 특정 기준에 따라 작업, 모델 등에 대한 권한을 정의 할 수있는 기능을 제공합니다. 이러한 기준은 무엇이든 가능하지만 (예 : 달의 날짜 등) 일반적으로 역할에 연계되어 있습니다. 따라서 역할 테이블의 정보와 평가할 특정 모델 인스턴스에 따라 권한을 지정하면됩니다.