2010-05-18 22 views
9

no estoy seguro de si se trata de un fallo, o sólo estoy perdiendo algo (aunque ya he analizado la documentación sobre inline), pero:permisos de usuario Django Inlines + ver - Permisos emite

Digamos Tengo un modelo A. El modelo A es una línea del modelo B. El usuario U tiene acceso completo al modelo B, pero solo cambia los permisos del modelo A (por lo tanto, no agrega, ni elimina).

Sin embargo, al editar el modelo B, el usuario U aún puede ver el enlace "Agregar otro A" en la parte inferior, aunque U no ha agregado permisos para ese modelo respectivo.

¿Qué pasa? ¿Por qué ese enlace sigue mostrando? Mi lógica dice que si U no tiene permisos para agregar A, el enlace ya no debería aparecer.

También, idealmente, me gustaría dar a U solo derechos de vista para el modelo A (así que no agregar, eliminar o cambiar solo la vista), pero he leído sobre esa filosofía (extraño, si me preguntas) de acuerdo a lo que "si no confías en U, solo niega el acceso al área de administración todos juntos". Una especie de doctrina estúpida.

En este momento, estoy tratando de simular este 'ver solo permisos' dejando U con solo cambiar derechos y establecer todos los campos como de solo lectura. Pero creo que esto es un enfoque algo estúpido y también puede causar problemas como los permisos mencionados anteriormente ...

¿Cómo un programador promedio de Django como yo logra permisos de solo lectura, y sobre todo, cómo debería deshacerme? del enlace "Agregar otro A" en la parte inferior del formulario de edición de administrador?

¡Gracias de antemano!

+0

Gran pregunta aquí: ¿cómo se define este "usuario X tiene permisos de acceso de solo lectura para el objeto Y"? El marco de permanentes es más una base sobre la cual debe escribir su propio código para verificar y validar las acciones del usuario en ciertos objetos. Lea sobre el decorador [permission_required] [1] para obtener más información. El administrador en sí no adivinará mágicamente que el usuario X no puede crear objetos Y y luego eliminar la opción "Agregar Y". [1]: http://docs.djangoproject.com/en/1.2/topics/auth/#django.contrib.auth.decorators.permission_required – dguaraglia

+0

sería más fácil leer la pregunta si tuviera algunos ejemplos de modelos y clases modeladmin –

Respuesta

2

Si quiero una versión de solo lectura de lo que hay en el administrador, solo escribo algunas vistas de Django normales y las guardo fuera del administrador.

No creo que el tipo de cosas de las que está hablando (permitiendo cambios en un objeto pero no en sus líneas) realmente sean compatibles con el administrador. No me malinterprete: el administrador es muy flexible y útil, pero no tiene la intención de hacer todo por usted.

La única manera que veo que ser capaz de tener tanto control en el admin es no en línea A.

"Si usted no confía en T, simplemente se niegue el acceso a la zona de administración todos juntos". Una especie de doctrina estúpida.

En realidad, cuando se considera que el administrador no está destinado a tener el nivel de seguridad requerido para garantizar el control de acceso de grano fino. Hay muchos, muchos lugares en el administrador, debido a su naturaleza abierta y extensible, donde los errores pueden acechar (generalmente en el código escrito por el usuario) que pueden ser explotados por los malos actores. Esta es la razón por la que los usuarios no confiables siempre deben ver todas las URL administrativas como 404.

De todos modos, cuando los requisitos de control de acceso son tan finos, es poco probable que una solución general (es decir, django.contrib) encaje.

Cuestiones relacionadas