Bonjour la team !
J arrive à renvoyer mon Array d utilisateur en json mais…avec les password hasher Comment puis-je masquer des champs s’il vous plait ?
Bonjour la team !
J arrive à renvoyer mon Array d utilisateur en json mais…avec les password hasher Comment puis-je masquer des champs s’il vous plait ?
Salut @Nono92
Tu as un peu de code à nous montrer côté Vapor ?
L’idée serait de ne transmettre que les champs dont tu as besoin.
Merci @alexandre.cane
Tu as un peu de code à nous montrer côté Vapor ?
oui biensur :
Je souhaite renvoyer tout sauf l’ID et le password
Une solution consiste à ne faire le User.query() que sur les champs dont tu as besoin :
https://docs.vapor.codes/4.0/fluent/query/#field
Sinon au même endroit dans ta fonction all()
Avant de return le User tu modifie les champs de ton object :
let user = User.query(on: req).all();
user.passwordHash = « ****** »;
return user;
Il y a peu être moyen de unset user.passwordHash. Je ne fais plus de dev en Swift donc à prendre avec des pincettes mais je pense que ça peut t’aider.
@alexandre.cane t’es un chef ! je vais tester de suite !
Edit :
Voici la solution !
(ponctuelle car ça ne gere qu un seul champs) Je continue d’investiguer !
On dois passer en parametre du All les champs voulus !
Non ça ressemble plutôt à :
User.query(on: req)
.field(\.$name)
.field(\.$email)
.all()
let user = User.query(on: req)
.field(\.$name)
.field(\.$email)
.all()
if let name = user.$name.value {
// Name was fetched.
} else {
// Name was not fetched.
// Accessing `user.name` will fail.
}
Si tu lis la doc ils expliquent que tous les champs de User non sélectionnés au cours d’une requête seront dans un état non initialisé. Tenter d’accéder directement aux champs non initialisés entraînera une erreur fatale. Pour vérifier si la valeur de champ d’un modèle est définie, utilisez la propriété value $nomDuChamp
Voir exemple au dessus
Merci ! j’avais lu mais pas compris sur la doc
edit : Je ne comprend pas comment utiliser le if enfaite
Un peu compliqué de tout expliquer et @mbritto le ferait mieux que moi.
Mais pour avancer vers la solution essayer de rendre var passwordHash optionnel dans ta class User et attention il faut sûrement modifier un peu le paramètre passwordHash de la fonction init un peu à la façon de id.
Encore une fois je n’ai pas fait de Swift depuis presque 4 ans.