2011-12-14 2 views
1

현재 사용자에게 쓰기 권한이있는 계정 (SOQL 사용) 만 반환 할 수 있습니까?사용자 권한을 기반으로 레코드를 쿼리하려면 어떻게해야합니까?

예를 들어 특정 계정으로 이동하여 [공유] 버튼을 클릭하면 해당 레코드에 액세스 할 수있는 사용자 (및 그룹) 목록을 볼 수 있습니다. 이러한 사용자 중 하나로 로그인하면 Visualforce 페이지에서 사용자 지정 컨트롤러를 통해 SOQL 문을 실행하여 계정 레코드를 검색 할 수 있습니다. 그러나 사용자가 해당 레코드에 쓰거나 편집 할 권한이있는 경우에만 계정 레코드가 반환되도록하고 싶습니다. 어떤 아이디어? 미리 감사드립니다!

답변

1

공유를 시행하는 방법은 with sharing 키워드를 사용하는 것입니다. 어떤 이유로 든이 작업을 수행하지 않으려는 경우 DMLException의 catch 블록에서 DML 문을 try 블록으로 래핑 할 수 있습니다. 예외 오브젝트에 대해 getDmlType()을 호출하여 실패가 권한과 관련이 있는지 확인하십시오. 나는 상태 코드가 System.StatusCode.INSUFFICIENT_ACCESS_OR_READONLY 일 것이라고 생각한다. 다음은 status codes의 다소 완전한 목록입니다.

+0

나는'with sharing' 키워드를 사용하고 있지만 여전히 쓰기 불가능한 레코드를 얻고 있습니다. –

+0

그래, 쓰기 가능하지만 읽을 수는 없습니다. 그래서 DML 호출을 작성한 다음 예외를 잡아서 그에 따라 처리해야한다고 생각합니다. –

+0

DML 호출 전에 알아야 할 방법이 있습니까? 필자는 반드시 레코드를 업데이트하고 싶지 않습니다. –