2012-04-24 2 views
0

Symfony 1.4 프로젝트에서 다른 역할에 대해 지정된 작업을 제공하고 싶습니다.Symfony 1.4 다른 역할에 대한 CRUD가 다릅니다.

프로젝트에는 특정 역할에 의해서만 값을 수정할 수있는 여러 데이터베이스 테이블이 있습니다.

예를 들어 관리자는 모든 모델의 CRUD에 액세스 할 수 있습니다. 또 다른 역할 (컨설턴트가 됨)은 지정된 모델 (전부는 아님)의 결과 만 검색 (수정 또는 제거하지 않음) 할 수 있습니다.

심포니에서 어떻게 이러한 기능을 지원할 수 있습니까? 프로젝트의 역할이 미리 지정되어 있다고 가정합니다.

내가 생각한 한 가지 해결책은 각 역할에 대한 모듈과 작업을 별도로 작성하는 것 (crud panels + 하나의 로깅 인터페이스)이지만 큰 일처럼 들릴 수 있습니다.

더 똑똑한 방법이 궁금합니다.

답변

1

내가 달성하는 가장 좋은 방법은 분명히 credentials (sf1.2이지만 1.4는 괜찮습니다)이라고 생각합니다.

관련 권한 (자격 증명)이있는 일부 그룹을 사용하려면 sfGuardDoctrine을 사용하는 것이 좋습니다. 당신은 그룹에 등 관리자, 컨설턴트, 등등 당신은 생성, 제거 modifiy, 같은 일부 자격 증명을 연결, 편집 .. 다음

그리고, 때마다 A를 정의 사용자가 로그인하면 자격 증명이 자동으로 정의됩니다 (그룹 또는 그룹과 관련).

후에는 사용자가 수행 할 수있는 경우 모든 행동을 확인해야합니다 :

여기
if($this->getUser()->hasCredential('modify')) 
{ 
    // authorized action 
} 

이 sfGuard에 대한 몇 가지 more documentation입니다 (sf1.0 관련이 있지만, 어떻게 작동하는지 이해하는 것이 좋다) .