graphql-python / graphql-python/graphene-django

Permission System

Offen
#79 56 Kommentare 34 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
✨enhancement
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

Beitragsleitfaden öffnen

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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.