django-permiso es una aplicación Django para mejorar sistema de permisos que admite el sistema de permiso permiso objeto y papel basada.
Instalar
django-permiso está en PyPI_ así ::
& Nbsp; pip install django-permiso
& Nbsp; & nbsp; & nbsp; o
& Nbsp; PIP instalar git + git: //github.com/lambdalisue/django-permission.git#egg=django-permission
rápido tutorial
1. & nbsp; Añadir `` 'permission'`` a `` INSTALLED_APPS`` de su `` settings.py`` y confirman' 'django.contrib.auth' y 'django.contrib.contenttypes' es en `` INSTALLED_APPS``
& Nbsp; & nbsp; & nbsp; .. Nota ::
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; django-permiso puede usar `django-fenicms
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; el diseño visual de la página change_list en django administrador si está disponible. Añadir 'fenicms' a
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; su `` INSTALLED_APPS`` para habilitar AJAX clasificación, añadiendo, ampliar las características.
2. & nbsp; Añadir `` 'permission.backends.PermissionBackend'`` a `AUTHENTICATION_BACKENDS`` de su` settings.py`` ``. Si no puedes configuración existente, basta con añadir siguiente código ::
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; AUTHENTICATION_BACKENDS = (
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # 'Django.contrib.auth.backends.ModelBackend', & nbsp; & nbsp; # No utilice este backend con RoleBackend
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 'permission.backends.ModelBackend', # Usar permission.backends.ModelBackend insted
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 'Permission.backends.PermissionBackend',
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 'Permission.backends.RoleBackend',
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; )
3. & nbsp; Añadir `` permissions.py`` al directorio que contiene `` models.py``. Y escribir siguientes códigos para iniciar ::
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; de registro de importación permiso
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; del permiso de importación PermissionHandler
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; a partir de modelos importar YourModel
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; clase YourModelPermissionHandler (PermissionHandler):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "" "Clase de controlador Permiso para` `YourModel``. Similares con AdminSite" ""
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; has_perm def (self, user_obj, perm, obj = None):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "" "Esto se llama para comprobar el permiso de la modelo." ""
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; si user_obj.is_authenticated ():
si perm == 'yourapp.add_yourmodel':
# Usuario autenticado tiene agregar permisos de este modelo
devolver True
elif obj y obj.author == user_obj:
# En caso contrario (cambiar / eliminar) el usuario debe ser un autor
devolver True
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # El usuario no tiene permiso de `` perm``
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; return false
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # Registrar este `` YourModelPermissionHandler`` con `` YourModel``
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; registry.register (YourModel, YourModelPermissionHandler)
Papel?
django-permiso tiene sistema de autorización basada en roles. visite su página de administración de Django para crear / modificar los roles (Vea las imágenes a continuación).
Los permisos de las funciones se manejan con `` permission.backends.RoleBackend``.
.. :: Imagen http://s1-01.twitpicproxy.com/photos/full/528601159.png?key=943727
& Nbsp; & nbsp; & nbsp; : Align: center
.. :: Imagen http://s1-04.twitpicproxy.com/photos/full/528601385.png?key=9431458
& Nbsp; & nbsp; & nbsp; : Align: center
Este sistema de papel se encuentra en desarrollo. Este sistema podría no funcionar correctamente todavía.
.. Nota ::
& Nbsp; & nbsp; & nbsp; Sistema de autorización basada en roles no soporta permiso objeto y el permiso anónimo.
& Nbsp; & nbsp; & nbsp; Sin embargo, estos permisos se manejan con manejador individual basado en el permiso backend
& Nbsp; & nbsp; & nbsp; (`` Permission.backends.PermissionBackend``)
¿Cómo regular los permisos utilizados en el controlador
`` permisos de cuidado PermissionHandler`` relacionados con el modelo de certificado sólo en defecto. Cambiar
este comportamiento, debe definir atributo `` `` permissions`` o métodos que get_permissions``
devolver una serie de permiso (como 'auth.add_user') lista.
`` Get_permissions`` devolver el valor de `` permissions`` si se define el atributo. De lo contrario,
volver todos los permisos relacionados con el modelo de predeterminado utilizado método `` get_model_permissions``.
El código de ejemplo siguiente muestra cómo manejar todos los permisos de la aplicación del modelo en uno
`` PermissionHandler`` ::
& Nbsp; & nbsp; & nbsp; de registro de importación permiso
& Nbsp; & nbsp; & nbsp; del permiso de importación PermissionHandler
& Nbsp; & nbsp; & nbsp; a partir de modelos importar YourModel
& Nbsp; & nbsp; & nbsp; a partir de modelos HisModel importación
& Nbsp; & nbsp; & nbsp; a partir de modelos HerModel importación
& Nbsp; & nbsp; & nbsp; clase AppPermissionHandler (PermissionHandler):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; get_permissions def (auto):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # `` Get_app_permissions () `` método regreso todos los permisos relacionados
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # Para la aplicación del modelo.
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; volver self.get_app_permissions ()
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; has_perm def (self, user_obj, perm, obj = None):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; si perm.endswith ('_ yourmodel'):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # Todo usuario tiene todos los permisos para `` YourModel``
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; devolver True
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; elif perm.endswith ('_ hismodel'):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; si user_obj.is_authenticated ():
Usuario # sólo autenticado tiene todos los permisos para `` HisModel``
devolver True
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; elif perm.endswith ('_ hermodel'):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; si user_obj.is_staff:
# Único usuario personal cuenta con todos los permisos para `` HerModel``
devolver True
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; return false
& Nbsp; & nbsp; & nbsp; # Usted tiene que registrar el manipulador con el modelo
& Nbsp; & nbsp; & nbsp; # Incluso AppPermissionHandler no se preocupa por modelo
& Nbsp; & nbsp; & nbsp; registry.register (YourModel, AppPermissionHandler)
& Nbsp; & nbsp; & nbsp; # Registry.register (HisModel, AppPermissionHandler) # o puede registrarse con HisModel
& Nbsp; & nbsp; & nbsp; # Registry.register (HerModel, AppPermissionHandler) # o puede registrarse con HerModel
Requisitos :
- Python
- Django
Comentarios que no se encuentran