django-permesso è un app Django al sistema dei permessi potenziato che supporta il sistema permesso il permesso oggetti e il ruolo based.
Installa
django-permesso è in PyPI_ così ::
& Nbsp; pip install django-permessi
& Nbsp; & nbsp; & nbsp; o
& Nbsp; PIP installare git + git: //github.com/lambdalisue/django-permission.git#egg=django-permission
esercitazione rapida
1. & nbsp; Aggiungi `` 'permission'`` a `` INSTALLED_APPS`` del `` settings.py`` e confermare' 'django.contrib.auth' e 'django.contrib.contenttypes "è in` `INSTALLED_APPS``
& Nbsp; & nbsp; & nbsp; .. Note ::
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; django-permesso può utilizzare `Django-fenicms
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; il visual design della pagina change_list in Django di amministrazione, se disponibile. Aggiungi 'fenicms' a
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; il tuo `` INSTALLED_APPS`` per consentire AJAX ordinamento, aggiungendo, espandendo le caratteristiche.
2. & nbsp; Aggiungi `` 'permission.backends.PermissionBackend'`` a `` AUTHENTICATION_BACKENDS`` del `` settings.py``. Se non è possibile le impostazioni esistenti, è sufficiente aggiungere codice seguente ::
& 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; # Non usare questo backend con RoleBackend
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 'permission.backends.ModelBackend', # Utilizzare permission.backends.ModelBackend invece
& 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; Aggiungi `` permissions.py`` nella directory che contiene `` models.py``. E scrivere seguenti codici per avviare ::
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; dal permesso di registro import
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; dal permesso di importazione PermissionHandler
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; dai modelli importare YourModel
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Classe YourModelPermissionHandler (PermissionHandler):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "" "Classe handler permesso per` `YourModel``. Simile con AdminSite" ""
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; def has_perm (self, user_obj, perm, obj = None):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "" "Questo è chiamato per verificare l'autorizzazione del modello." ""
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; se user_obj.is_authenticated ():
se perm == 'yourapp.add_yourmodel':
# Utente autenticato dispone aggiungere le autorizzazioni di questo modello
restituirà True
elif obj e obj.author == user_obj:
# Altrimenti (modificare / cancellare) utente deve essere un autore
restituirà True
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # Utente non ha il permesso di `` perm``
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ritorno False
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # Registrare questo `` YourModelPermissionHandler`` con `` YourModel``
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; registry.register (YourModel, YourModelPermissionHandler)
Il ruolo?
django-autorizzazione ha sistema di autorizzazione basato sui ruoli. visitare la vostra pagina di amministrazione Django per creare / modificare i ruoli (vedi screenshot qui sotto).
Le autorizzazioni di ruolo sono trattati con `` permission.backends.RoleBackend``.
.. :: Immagine http://s1-01.twitpicproxy.com/photos/full/528601159.png?key=943727
& Nbsp; & nbsp; & nbsp; : Align: center
.. :: Immagine http://s1-04.twitpicproxy.com/photos/full/528601385.png?key=9431458
& Nbsp; & nbsp; & nbsp; : Align: center
Questo sistema di ruolo è in fase di sviluppo. Questo sistema non può ancora funzionare correttamente.
.. Note ::
& Nbsp; & nbsp; & nbsp; Sistema dei permessi in base ai ruoli non supporta autorizzazioni oggetto e il permesso anonimo.
& Nbsp; & nbsp; & nbsp; Tuttavia queste autorizzazioni sono trattati con Individual gestore basato permessi backend
& Nbsp; & nbsp; & nbsp; (`` Permission.backends.PermissionBackend``)
Come regolamentare le autorizzazioni utilizzate nel gestore
permessi di cura `` PermissionHandler`` legati con il modello depositato solo in difetto. Cambiare
questo comportamento, è necessario definire `` attributo permissions`` o `` metodi get_permissions`` che
restituire una stringa permesso (come 'auth.add_user') Lista.
`` Get_permissions`` restituire il valore di `` permissions`` se l'attributo è definito. Altrimenti
restituire tutte le autorizzazioni relative al modello di default usata `` metodo get_model_permissions``.
Il codice di esempio riportato di seguito mostra come gestire tutte le autorizzazioni di app del modello in uno
`` PermissionHandler`` ::
& Nbsp; & nbsp; & nbsp; dal permesso di registro import
& Nbsp; & nbsp; & nbsp; dal permesso di importazione PermissionHandler
& Nbsp; & nbsp; & nbsp; dai modelli importare YourModel
& Nbsp; & nbsp; & nbsp; da modelli di importazione HisModel
& Nbsp; & nbsp; & nbsp; da modelli di importazione HerModel
& Nbsp; & nbsp; & nbsp; Classe 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 () `` metodo di ritorno tutti i permessi relativi
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # Per l'applicazione del modello.
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ritorno self.get_app_permissions ()
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; def has_perm (self, user_obj, perm, obj = None):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; se perm.endswith ('_ yourmodel'):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # Tutti utente ha tutte le autorizzazioni per `` YourModel``
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; restituirà 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; se user_obj.is_authenticated ():
Utente # autenticato solo ha tutte le autorizzazioni per `` HisModel``
restituirà 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; se user_obj.is_staff:
# Solo utente personale ha tutte le autorizzazioni per `` HerModel``
restituirà True
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ritorno False
& Nbsp; & nbsp; & nbsp; # È necessario registrare il gestore con il modello
& Nbsp; & nbsp; & nbsp; # Anche AppPermissionHandler non si preoccupa modello
& Nbsp; & nbsp; & nbsp; registry.register (YourModel, AppPermissionHandler)
& Nbsp; & nbsp; & nbsp; # Registry.register (HisModel, AppPermissionHandler) # o è possibile registrarsi con HisModel
& Nbsp; & nbsp; & nbsp; # Registry.register (HerModel, AppPermissionHandler) # o è possibile registrare con HerModel
Requisiti :
- Python
- Django
I commenti non trovato