ALLINAPPLI / connect-emiles

Plugin permettant d'ajouter un bouton de connexion à un site partenaire via un shortcode
0 stars 0 forks source link

Token #3

Closed allinappliadmin closed 10 months ago

allinappliadmin commented 11 months ago

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

wyde22 commented 11 months ago

ok pas de souci. J'ai créé un endpoint spécifique et je l'affiche comme convenu dans le setting du plugin :

Connexion-Site-partenaire-‹-test-devweb-—-WordPress

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

allinappliadmin commented 11 months ago

on peut s'appeler demain si besoin

allinappliadmin commented 11 months ago

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.

allinappliadmin commented 11 months ago

pour les data tu penses pouvoir exposer user_firstname & user_lastname ?

wyde22 commented 11 months ago

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

allinappliadmin commented 11 months ago

https://wordpress.stackexchange.com/questions/317541/trouble-with-question-mark-in-rewrite-rule

wyde22 commented 11 months ago

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 requestde WP qui permet de récupérer les variables présentes dans l'url. En faisant ça cela fonctionne bien

allinappliadmin commented 11 months ago

bravo ! super nouvelle, je suis très content.

allinappliadmin commented 11 months ago

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

wyde22 commented 11 months ago

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

wyde22 commented 11 months ago

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 :)

allinappliadmin commented 11 months ago

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.

wyde22 commented 11 months ago

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

allinappliadmin commented 11 months ago

nous allons le poussé nous-mêmes lundi. Merci beaucoup pour le job

wyde22 commented 11 months ago

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

allinappliadmin commented 11 months ago

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)    
}
allinappliadmin commented 11 months ago

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

wyde22 commented 11 months ago

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 emailafin que cela corresponde totalement au besoin client

wyde22 commented 11 months ago

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

allinappliadmin commented 11 months ago

fais les modifs direct sur le site, j'installe Filemanager image

allinappliadmin commented 11 months ago

{ "firstname": "Jhon", "lastname": "Doe", "email": "dev-email@wpengine.local" }

oui c'est comme ça

wyde22 commented 11 months ago

ok je viens de faire le nécessaire en ajoutant la nouvelle version du plugin

allinappliadmin commented 11 months ago

j'ai testé, c'est nickel. on devrait avoir le token là et pouvoir ensuite créer le shortcode du bouton

allinappliadmin commented 10 months ago

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”}

allinappliadmin commented 10 months ago

c'est le dernier truc qui nous manque

wyde22 commented 10 months ago

@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

allinappliadmin commented 10 months ago

on s'est emmêlé les pinceaux dans les URL cf. https://github.com/ALLINAPPLI/connect-emiles/issues/4#issuecomment-1783083829