EcrituresNumeriques / stylo

Stylo est un éditeur de textes pour articles scientifiques en sciences humaines et sociales.
https://stylo.huma-num.fr
GNU General Public License v3.0
51 stars 12 forks source link

Supprimer la notion d'utilisateur optionnel sur les mutations de l'API GraphQL #884

Open ggrossetie opened 1 year ago

ggrossetie commented 1 year ago

Il y a deux façons de s'authentifier auprès de l'API GraphQL :

De ce fait, on se retrouve avec des signatures de mutations avec un user optionnel:

createArticle(title: String!, user: ID, tags: [ID]): Article

L'idée est de pouvoir renseigner un utilisateur quand on utilise un token "admin". L'admin crée un article en "tant que". Il serait peut être plus parlant d'avoir :

# Crée l'article avec utilisant l'utilisateur authentifié.
# Erreur si on tente une création avec un token admin.
user {
  createArticle(title: String!, tags: [ID]): Article
}

# Crée l'article avec utilisant l'utilisateur 12345.
# Erreur si l'utilisateur authentifié n'a pas accès à l'utilisateur 12345.
user(id: "12345") {
  createArticle(title: String!, tags: [ID]): Article
}

Une autre solution serait de créer un graph "admin" :

# Crée un article "en tant que" avec un token "admin".
# Erreur si on tente un appel avec un token non admin.
admin {
  createArticle(title: String!, owner: ID!, tags: [ID]): Article
}

# Crée un article avec l'utilisateur authentifié.
# Erreur si on tente une création avec un token admin.
createArticle(title: String!, tags: [ID]): Article

La première solution est plus générique alors que la deuxième est peut être plus explicite?