django-toestemming is een Django app verbeterd toestemming systeem dat object toestemming en rol-gebaseerde toestemming systeem te ondersteunen.
Installeer
django-toestemming is in PyPI_ zo ::
& Nbsp; pip installeren django-toestemming
& Nbsp; & nbsp; & nbsp; of
& Nbsp; pip installeren git + git: //github.com/lambdalisue/django-permission.git#egg=django-permission
Korte handleiding
1. & nbsp; Voeg `` 'permission'`` op `` INSTALLED_APPS`` van uw `` settings.py`` en bevestigen' 'django.contrib.auth' en 'django.contrib.contenttypes' is in `` INSTALLED_APPS``
& Nbsp; & nbsp; & nbsp; .. Opmerking ::
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; django-toestemming kan gebruiken `django-fenicms
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; het visuele ontwerp van change_list pagina in Django admin indien beschikbaar. Zet 'fenicms' te
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; je `` INSTALLED_APPS`` inschakelen AJAX sorteren, het toevoegen, uitbreiden van functies.
2. & nbsp; Voeg `` 'permission.backends.PermissionBackend'`` op `` AUTHENTICATION_BACKENDS`` van uw `` settings.py``. Als je niet kunt bestaande instellingen, gewoon volgende code toe te voegen ::
& 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; # Gebruik deze backend met RoleBackend niet gebruiken
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 'permission.backends.ModelBackend', # Gebruiken 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; Voeg `` permissions.py`` naar de directory waarin `` models.py`` bevat. En schrijf volgende codes voor het starten ::
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; van toestemming import register
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; van toestemming import PermissionHandler
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; van modellen importeren YourModel
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; klasse YourModelPermissionHandler (PermissionHandler):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "" "Toestemming handler klasse voor` `YourModel``. Vergelijkbaar met AdminSite" ""
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; def has_perm (zelf, user_obj, permanenten, obj = Geen):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "" "Dit heet voor het controleren van de toestemming van het model." ""
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; indien user_obj.is_authenticated ():
Als perm == 'yourapp.add_yourmodel':
# Geverifieerde gebruiker machtigingen van dit model toe te voegen
return true
Elif obj en obj.author == user_obj:
# Anders (wijzigen / verwijderen) gebruiker moet een auteur te zijn
return true
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # De gebruiker heeft geen toestemming van `` perm`` hebben
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; return false
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # Registreert deze `` YourModelPermissionHandler`` met `` YourModel``
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; registry.register (YourModel, YourModelPermissionHandler)
Role?
django-rechten heeft voor rol-gebaseerde toestemming systeem. Bezoek je Django admin pagina aan rollen (Zie onderstaande screenshots) maken / wijzigen.
De rol machtigingen worden behandeld met `` permission.backends.RoleBackend``.
.. Image :: http://s1-01.twitpicproxy.com/photos/full/528601159.png?key=943727
& Nbsp; & nbsp; & nbsp; : Align: center
.. Image :: http://s1-04.twitpicproxy.com/photos/full/528601385.png?key=9431458
& Nbsp; & nbsp; & nbsp; : Align: center
Deze rol systeem in ontwikkeling. Dit systeem zou nog niet goed werken.
.. Opmerking ::
& Nbsp; & nbsp; & nbsp; Op rollen gebaseerde toestemming systeem biedt geen ondersteuning object toestemming en anoniem toestemming.
& Nbsp; & nbsp; & nbsp; Echter deze machtigingen wordt omgegaan met Individual handler gebaseerd toestemming backend
& Nbsp; & nbsp; & nbsp; (`` Permission.backends.PermissionBackend``)
Hoe permissies gebruikt in de handler reguleren
`` PermissionHandler`` zorg permissies verwant met maatschappelijke model alleen in verzuim. Veranderen
Dit gedrag dient u get_permissions`` methoden definiëren `` permissions`` attribuut of `` die
terugkeren toestemming string (zoals 'auth.add_user') lijst.
`` Get_permissions`` de waarde van `` permissions`` terugkeren als het attribuut is gedefinieerd. Anders
terugkeren alle machtigingen in verband met het model in standaard gebruikt `` get_model_permissions`` methode.
De voorbeeldcode hieronder laten zien hoe u alle machtigingen van de app van het model te behandelen in één
`` PermissionHandler`` ::
& Nbsp; & nbsp; & nbsp; van toestemming import register
& Nbsp; & nbsp; & nbsp; van toestemming import PermissionHandler
& Nbsp; & nbsp; & nbsp; van modellen importeren YourModel
& Nbsp; & nbsp; & nbsp; van modellen import HisModel
& Nbsp; & nbsp; & nbsp; van modellen import HerModel
& Nbsp; & nbsp; & nbsp; klasse AppPermissionHandler (PermissionHandler):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; def get_permissions (zelf):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # `` Get_app_permissions () `` methode return alle machtigingen gerelateerde
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # Om de app van het model.
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.get_app_permissions terug ()
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; def has_perm (zelf, user_obj, permanenten, obj = Geen):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Als perm.endswith ('_ yourmodel'):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # Alle gebruiker heeft alle machtigingen voor `` YourModel``
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; return 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; indien user_obj.is_authenticated ():
# Alleen geverifieerde gebruiker heeft alle machtigingen voor `` HisModel``
return 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; indien user_obj.is_staff:
# Alleen personeel gebruiker heeft alle machtigingen voor `` HerModel``
return true
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; return false
& Nbsp; & nbsp; & nbsp; # Moet je de handler met het model te registreren
& Nbsp; & nbsp; & nbsp; # Zelfs AppPermissionHandler niet schelen model
& Nbsp; & nbsp; & nbsp; registry.register (YourModel, AppPermissionHandler)
& Nbsp; & nbsp; & nbsp; # Registry.register (HisModel, AppPermissionHandler) # of u kunt zich registreert bij HisModel
& Nbsp; & nbsp; & nbsp; # Registry.register (HerModel, AppPermissionHandler) # of u kunt zich aanmelden met HerModel
Eisen
- Python
- Django
Reacties niet gevonden