Pregunta

Tengo un objeto personalizado con un maestro de detención de la oportunidad. ¿Hay alguna forma de determinar si el usuario tiene acceso de lectura o lectura/escritura al consultar este objeto personalizado?

Para aclarar mis necesidades, estoy buscando una manera de representar mi página (no visual) con una distinción clara entre los registros a los que solo tienen acceso y registros en los que pueden editar.

¿Fue útil?

Solución

El usuario tendrá el mismo acceso a eso que tenga la oportunidad. los Profile El objeto expone los permisos, pero no parece que le permita conocer la configuración de CRUD para los objetos.

¿Estás creando una pieza de integración o trabajando con Visualforce? Si está utilizando Visualforce, la interfaz respetará automáticamente los controles de seguridad, ocultando datos que no se les permite ver y hacer que los campos se lean solo cuando se usan <apex:inputField> Si no tienen permiso para escribir en el campo.

** EDITAR ** Tal vez alguien tendrá una mejor solución, pero ¿qué hay de intentar actualizar los registros que consulta, almacenando si cada uno fue un éxito o un fracaso y luego usarla para controlar la interfaz? Un truco, si encuentro algo más, me aseguraré de actualizar.

** Editar 25/01/2012 ** Acabo de encontrar esto: http://www.salesforce.com/us/developer/docs/api/index_left.htm#starttopic=content/sforce_api_objects_userrecordaccess.htm?searchtype=stem

¡Estoy bastante seguro de que eso te dará exactamente lo que necesitas!

Otros consejos

Esto podría contener respuesta a su pregunta http://salesforceblogger.blogspot.com/2012/04/query-user-access-level-in-apex.html

Hay una tabla UserRecordAccess que está expuesta con API 24.0 con la que puede verificar fácilmente el acceso en lugar de golpear su cabeza con el objeto compartido.

No sé de una forma de consultar para averiguar el nivel de acceso, sin embargo, si su clase APEX usa la palabra clave con compartir, respetará compartir en el objeto, por lo tanto, cuando intente actualizar los datos, obtendrá una excepción DML que Podrías atrapar.

Si no está utilizando para compartir, Apex no respeta el modelo de intercambio y técnicamente el usuario podrá actualizar los datos incluso si no tiene acceso.

Como lo señaló LaceySnr si está utilizando Visualforce el <apex:inputfield> El elemento mostrará solo lectura automáticamente al usuario si solo tienen acceso a Readonly.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top