Closed allinappliadmin closed 10 months ago
ok pas de souci. J'ai créé un endpoint spécifique et je l'affiche comme convenu dans le setting du plugin :
en retour j'ai ce tableau
[
{
"data": {
"ID": "1",
"user_login": "toto",
"user_pass": "$P$B.9HPrQK3L\/g5BKe.5lvuakzWvScq0.",
"user_nicename": "toto",
"user_email": "dev-email@wpengine.local",
"user_url": "http:\/\/test-devweb.local",
"user_registered": "2023-09-14 14:17:04",
"user_activation_key": "",
"user_status": "0",
"display_name": "toto"
},
"ID": 1,
"caps": {
"administrator": true
},
"cap_key": "wp_capabilities",
"roles": [
"administrator"
],
"allcaps": {
"switch_themes": true,
"edit_themes": true,
"activate_plugins": true,
"edit_plugins": true,
"edit_users": true,
"edit_files": true,
"manage_options": true,
"moderate_comments": true,
"manage_categories": true,
"manage_links": true,
"upload_files": true,
"import": true,
"unfiltered_html": true,
"edit_posts": true,
"edit_others_posts": true,
"edit_published_posts": true,
"publish_posts": true,
"edit_pages": true,
"read": true,
"level_10": true,
"level_9": true,
"level_8": true,
"level_7": true,
"level_6": true,
"level_5": true,
"level_4": true,
"level_3": true,
"level_2": true,
"level_1": true,
"level_0": true,
"edit_others_pages": true,
"edit_published_pages": true,
"publish_pages": true,
"delete_pages": true,
"delete_others_pages": true,
"delete_published_pages": true,
"delete_posts": true,
"delete_others_posts": true,
"delete_published_posts": true,
"delete_private_posts": true,
"edit_private_posts": true,
"read_private_posts": true,
"delete_private_pages": true,
"edit_private_pages": true,
"read_private_pages": true,
"delete_users": true,
"create_users": true,
"unfiltered_upload": true,
"edit_dashboard": true,
"update_plugins": true,
"delete_plugins": true,
"install_plugins": true,
"update_themes": true,
"install_themes": true,
"update_core": true,
"list_users": true,
"remove_users": true,
"promote_users": true,
"edit_theme_options": true,
"delete_themes": true,
"export": true,
"administrator": true
},
"filter": null
}
]
je pense qu'on peut prendre uniquement ce qui a dans le data. Je pense que le retour est un json. A échanger ensemble quand tu auras un moment.
Il faut également que je contrôle les permissions. WordPress me permet de le faire mais c'est un peu flou pour moi. Je vais étudier cela
on peut s'appeler demain si besoin
pour le end-point il faut qu'il ait une syntaxe type https://smc-cse.fr/endpoint/ce/que/tu/veux/
sur lequel emile's viendra rajouter ?token=
ainsi que l'UUID qu'ils auront récupéré.
ça te semble jouable ? On doit se plier à leur syntaxe car ils ne bougeront pas d'un iota.
pour les data tu penses pouvoir exposer user_firstname & user_lastname ?
pour les data tu penses pouvoir exposer user_firstname & user_lastname ?
oui c'est bon je peux exposer ces données. Il faut construire un tableau, mettre les données qu'on souhaite dedans et ensuite renvoyer la donnée via le endpoint.
pour le end-point il faut qu'il ait une syntaxe type
https://smc-cse.fr/endpoint/ce/que/tu/veux/
sur lequel emile's viendra rajouter?token=
ainsi que l'UUID qu'ils auront récupéré. ça te semble jouable ? On doit se plier à leur syntaxe car ils ne bougeront pas d'un iota.
dans ce cas je ne pense pas qu'on peut utiliser les endpoint de WP. Si on utilise l'api rest de WP, on doit obligatoirement avoir une url typée WP avec les informations requises. Apparemment l'url doit être comme ceci : https://smc-cse.fr/endpoint/ plus d'autres paramètres si besoin. Il faut faire autrement
en fait j'ai trouvé une solution en utilisant la route sans faire de redirection. Il fallait réécrire la route. Voici le endpoint qu'on pourra fournir au client : http://test-devweb.local/wp-json/connect-topartnersite/v1/connect-partnersite/data?token=[uuid_utilisateur]
la route est donc /connect-partnersite/data
. On a un objet request
de WP qui permet de récupérer les variables présentes dans l'url. En faisant ça cela fonctionne bien
bravo ! super nouvelle, je suis très content.
est-ce que tu peux simplifier le chemin ?
j'imagine que connect-topartnersite
est le nom de l'extension : peux-tu l'appeler simplement emiles
?
et connect-partnersite
: peux-tu l'appeler endpoint
?
C'est pas juste cosmétique, on évite aussi les tirets quadratins dans les noms
ce qui pour SMC donnerait en prod : https://smc-cse.fr/wp-json/emiles/v1/endpoint/data?token=[uuid_utilisateur]
et je fournirai pour notre test cette URL callback pour que l'on ait un enfin un token de leur part : https://test.smc-cse.fr/wp-json/emiles/v1/endpoint/data
hello,
oui effectivement il est préférable de modifier le chemin. Il faut dans ce cas modifier le nom du plugin et mettre emiles et modifier également le nom de la route. Je pense que cela est possible sans trop de travail
je reviens vers toi prochainement.
A bientôt
salut, je viens de faire le nécessaire en modifiant avec succès le chemin et la route. Voici la nouvelle route : http://test-devweb.local/wp-json/emiles/v1/endpoint/data?token=[identifiant_utilisateur]
. Si tu veux je te propose d'échanger mercredi matin sur les nouvelles features à ajouter sur ce plugin. Au plaisir :)
merci et bravo. L'idéal si c'est fonctionnel c'est que tu puisses me fournir une version du plugin à charger sur la test.smc pour que je demande à emile's de me fournir le token. Il faudrait que tu pousses le code ici si possible mais c'est moins urgent. Mercredi nous sommes sur un salon avec Guy, donc plutôt jeudi matin.
j'ai essayé de pusher sur votre repo et j'ai un problème d'accès. Apparemment je ne suis pas autorisé à écrire sur votre repository : $ git push allinappliorigin remote: Write access to repository not granted. fatal: unable to access 'https://github.com/ALLINAPPLI/emiles.git/': The requested URL returned error: 403
je vais t'envoyer une archive de ce plugin par mail. C'est peut être plus simple. On en parle jeudi matin si tu veux afin de faire le test en direct live ensemble
nous allons le poussé nous-mêmes lundi. Merci beaucoup pour le job
je viens de penser à bien tester les permissions de l'endpoint créé par le plugin afin que les informations ne soit pas visible depuis un appel extérieur ALLINAPPLI/connect-emiles#2
Retour de Emile's. Comme on s'en doutait :
Pouvez-vous passer de
{
"code": "success",
"message": "Success",
"data": {
"firstname": "Salarie",
"lastname": "Salarie",
"email": ["salarie@yopmail.com"](mailto:salarie@yopmail.com)
}
}
A
{
"firstname": "Salarie",
"lastname": "Salarie",
"email": ["salarie@yopmail.com"](mailto:salarie@yopmail.com)
}
peux-tu revenir à une sortie plus simple ? Par contre je suis étonné de son format de l'e-mail parce que je n'ai pas cela via RestR Je n'arrive pas à te filer un accès ssh sur le domaine uniquement, j'investigue là. Mais en attendant il faut le faire à la main via les extensions de WP
ok je viens de faire le nécessaire et j'ai pushé sur master dans le repository. Je suis revenu à un format plus simple :
{
"firstname": "Jhon",
"lastname": "Doe",
"email": "dev-email@wpengine.local"
}
concernant l'email j'ai ce retour avec le logiciel insomnia. Tu veux avoir un retour comme ceci "email": ["salarie@yopmail.com"](mailto:salarie@yopmail.com)
? Je pense pouvoir forcer l'affichage de la clef email
afin que cela corresponde totalement au besoin client
voici ce que je peux faire avec le tableau de sortie :
{
"firstname": "Jhon",
"lastname": "Doe",
"email": "[dev-email@wpengine.local](mailto:dev-email@wpengine.local)"
}
tu veux que j'installe la nouvelle mise à jour l'extension sur le site de dev ? car comme cette manipulation regénère les uuid je préfère demander
fais les modifs direct sur le site, j'installe Filemanager
{ "firstname": "Jhon", "lastname": "Doe", "email": "dev-email@wpengine.local" }
oui c'est comme ça
ok je viens de faire le nécessaire en ajoutant la nouvelle version du plugin
j'ai testé, c'est nickel. on devrait avoir le token là et pouvoir ensuite créer le shortcode du bouton
j'ai besoin que tu modifies la sortie en cas d'échec pour qu'elle ressemble exactement à ce qu'Emile's attend.
Le format doit être uniquement et sans rien d'autre :
{“error”:”l'identifiant du contact est invalide”}
c'est le dernier truc qui nous manque
@allinappliadmin je viens de faire le nécessaire dans le code pour avoir un retour plus simple que le retour natif de WordPress. En fait j'utilisais dans la déclaration de mon endpoint un validate_callback
. Cette fonction de callback est intéressante car elle permet de facilement contrôler la validation du token. Mais via cette fonction on ne peut pas personnaliser le retour. On doit obligatoirement utiliser le format des erreurs WordPress.
Du coup je fais ma vérification de ce token via la fonction de callback de réponse. Via cette fonction je peux ajouter à ma convenance un retour spécifique.
j'ai voulu pusher mes modifications sur ton repo mais malheureusement sans résultat. Par contre j'ai transféré mon repository privé vers l'organisation allinappli. Tu as du recevoir un mail d'invitation. Le repo se nomme connect-emiles
. Quand tu auras accepté cette invitation on pourra travailler sur ce repository et je pense que le repo privé emiles pourra être effacé. A échanger ensemble
on s'est emmêlé les pinceaux dans les URL cf. https://github.com/ALLINAPPLI/connect-emiles/issues/4#issuecomment-1783083829
Dewy, Emile's nous fournira un token de test à partir du moment où l'on aura fourni notre URL callback. J'ai demandé confirmation. Et je remets la doc ici
EMILES - autolog callback1.0.1-3.pdf