graphql-python / graphql-python/graphene-django
Permission System
- Vorherrschende Sprache
- Python
- Sterne
- 4.4k
- Forks
- 760
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
I would like to add a permission system but want to some feedback on the API before I implement.
You would have two options and I'm proposing to add both:
## Option 1: Custom queryset method
This option would let you overwrite how a queryset is filtered.
```python
class UserNode(DjangoObjectType):
class Meta:
model = User
interfaces = (relay.Node,)
only_fields = ('email', 'first_name', 'last_name')
@classmethod
def get_queryset (cls, queryset, args, request, info):
return queryset.filter(owner=request.user)
```
## Option 2: Permissions List
This option would setup a Meta API to use to define permissions
```python
def auth_required(queryset, args, request, info):
if request.user.is_authenticated():
return queryset
return queryset.none()
class UserNode(DjangoObjectType):
class Meta:
model = User
interfaces = (relay.Node,)
only_fields = ('email', 'first_name', 'last_name')
permissions = [auth_required]
```
If these look like good APIs then I'll implement.
Beitragsleitfaden
Rechercherichtung
Überprüfe die zwei vorgeschlagenen APIs für DjangoObjectType: eine benutzerdefinierte get_queryset-Methode und eine Meta-Berechtigungsliste. Das Issue nennt keine Dateien oder Tests, daher untersuche die bestehende Verarbeitung von DjangoObjectType und Meta, bevor du die Machbarkeit bewertest. Als abgeschlossen gilt die Einigung auf die API, bevor die Implementierung beginnt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- django, graphql, python
- Bereich
- authorization, backend-api-design
- Issue-Typ
- Feature
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Veraltet
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 25/100