Trucs et astuces

De petits trucs et astuces pour se faciliter la vie de tous les jours ( quasiment toujours lié à l’univers du web )

Prestashop : Ajouter une règle de validation sur un champ du formulaire de création de compte

Ça fait quelques temps que je n’avais pas publié de tutoriel générique sur Prestashop, mais celui-ci est parti du besoin suivant :

Sur ma boutique sur laquelle je propose des modules ( gratuit ) en téléchargement , j’ai pas mal d’emails fantaisistes pour les clients qui s’inscrivent.
Hors comme les modules sont ensuite envoyés par email, si celui du client ne correspond à rien aucune chance qu’il arrive au destinataire :/
Je souhaitais donc rajouter une règle de validation supplémentaire, pour ne pas autoriser les domaines emails  : test.com, example.com …

Attention ce tutoriel s’applique si vous souhaitez ajouter des règles de validation sur les champs standards du formulaire de création de compte :

  • Civilité
  • Prénom
  • Nom
  • Email
  • Mot de passe
  • Date de naissance

Pour l’ajout de vos propres champs vous pouvez regarder le tutoriel ici : https://www.h-hennes.fr/blog/2017/10/10/prestashop-1-7-ajouter-des-champs-clients/

Champs standards du formulaire de création de compte

Analyse et identification de la procédure

Pour ajouter cette validation on va faire un module qui va utiliser le hook additionalCustomerFormFields
Qui contrairement à ce que son nom laisse penser, permets également de modifier les champs actuels du formulaire.…

Prestashop : Ajouter une règle de validation sur un champ du formulaire de création de compte Lire la suite »

Utilisation d’une google cloud function avec authorisation en php

Petit tutoriel qui sors un peu de mes sujets habituels mais qui reste dans le cadre du développement php.
Nous allons voir comment appeler une google cloud fonction, qui nécessite une authentification.

La difficulté pour moi a vraiment été l’authentification et c’est un sujet qui m’a fait perdre un temps fou car la documentation de Google n’était absolument pas
claire sur le sujet.
L’authentification est réalisée via un fichier json reprenant les informations d’un compte de service. ( Cf. exemple ci-dessous )

Comme vous pouvez le juger sur la page suivante :  https://cloud.google.com/functions/docs/securing/authenticating 

Des exemples sont donnés en NodeJs, Go , Python et Java, mais en Php nous sommes invités à utiliser des bibliothèques tiers pour générer des jetons d’authentification, sans explications détaillées.

Voici un exemple de contenu du fichier d’authentification json

{
  "type": "service_account",
  "project_id": "PROJECT-ID",
  "private_key_id": "PRIVATE-KEY-ID",
  "private_key": "PRIVATE-KEY",
  "client_email": "[email protected]",
  "client_id": "CLIENT-ID",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/CUSTOMER-URL"
}

Utilisation d’une google cloud function avec authorisation en php Lire la suite »

Développez en local avec des domaines .localhost

Petite note rapide pour présenter une fonctionnalité qui doit exister depuis des années mais que je n’avait jamais utilisé.
Ceci s’applique uniquement si vous développez en local sous linux ( testé sur les versions 18 à 22 de Ubuntu )

Historiquement pour mes urls de développement j’ai utilisé les extensions suivantes :

  • .dev
  • .local

Pour chaque domaine il faut ensuite ajouter une entrée dans le fichier /ect/hosts
Si vous utilisez l’extension .localhost cela ne sera plus nécessaire car elle est automatiquement associée à votre poste de développement 🙂

Dorénavant tous mes projets sont donc sous la forme : https://www.mon-url-de-site.com.localhost
Plus besoin de toucher à ce fichier hosts !…

Développez en local avec des domaines .localhost Lire la suite »

WordPress hacké , que faire ?

Suite à la remarque d’un visiteur ( que je remercie encore au passage ), j’ai découvert récemment que le blog avait été hacké et que du contenu de spam était hébergé sur mon domaine.
Ce blog comme beaucoup d’autres utilise WordPress, et à la fois la version globale de WordPress et les plugins sont mis à jour régulièrement.
Je n’ai pas trouvé quelle est la faille initiale qui a permis l’envoi de fichier compromis.
En revanche voici comment j’ai procédé pour corriger.

Installer le plugin WordFence

Après quelques jour du jeu de la chat et la souris de suppression manuelle des fichiers qui revenaient quelques heures plus tard, je me suis décidé à chercher un plugin qui pourrait corriger cela tout seul.

J’ai trouvé Wordfence : https://fr.wordpress.org/plugins/wordfence/ qui est noté plus de 4,5/5 sur près de 4 millions d’installations.
C’est un module freenium ( version gratuite mais avec des fonctionnalité avancées payantes)
La version gratuite est tout à fait suffisante.
L’outil permets de faire directement un scan des fichiers du core wordpress ainsi que de l’ensemble des plugins installés:
Il identifie l’ensemble des fichiers modifiés et permets de visualiser les différences, et même de corriger et nettoyer les fichiers directement depuis le back office en un clic.…

WordPress hacké , que faire ? Lire la suite »

Mysql : identifier les tables manquantes entre 2 bases de données

Un petit article pratique assez générique pour une fois.

Pour un projet récent il fallait que je puisse détecter les tables manquantes entre une base de données « native » et la base de données du projet.

Il existe un certain nombre de logiciels qui le permettent mais je n’en avais pas sous la main.
Navicat permets d’identifier les tables concernées mais pas d’en exporter la liste.

La solution donnée ici permettra de faire tout en ligne de commandes ( linux )

J’ai utilisé l’outil https://github.com/DBDiff/DBDiff comme base.

Il faut commencer par télécharger le phar

wget https://github.com/DBDiff/DBDiff/releases/download/v1.0.0/dbdiff.phar

Ajouter les droits d’exécution au fichier.
Il faut ensuite configurer une connexion pour l’outil dbdiff ( dans le même dossier ou vous allez placer le phar )
Pour cela il faut créer un fichier .dbdiff ( attention au . devant ) avec les identifiants de connexions

server1:
  user: user
  password: password
  port: 3306 # for MySQL this is 3306
  host: 127.0.0.1 # usually localhost or 127.0.0.1
#Mettre la configuration des autres serveurs si nécessaires
server x:

L’outil dbdiff permets ensuite de générer nativement un fichier sql récapitulatif des différences via la commande :

.

Mysql : identifier les tables manquantes entre 2 bases de données Lire la suite »

10 ans pour le blog !

Les années et défilent, et ça y’est le cap fatidique des 10 ans est déjà arrivé pour le blog 🙂

Je profite de l’occasion pour faire une petite rétrospective du travail qui a été fait sur celui-ci lors de la dernière décennie, et pour partager pour ceux que ça intéressent quelques statistiques.

Pour ceux que ça intéresse, vous pouvez également regarder le premier article 🙂 : Bienvenue sur mon blog !

État des lieux

Tout d’abord au niveau de la ligne éditoriale, comme présenté à l’origine les informations publiées sont avant tout techniques et orientées autour des thématique suivantes :

  • Prestashop
  • Magento
  • Mantis Bug tracker
  • Administration système

Je pense avoir une certaine légitimité sur le sujet puisque ça fait presque aussi longtemps que je travaille sur ces plateformes que j’écris des articles.

L’idée d’écrire des articles sur ce sujet est parti il y’a quelques années.
A une époque ou, trouver des documentations techniques sur les solutions open source se résumait à chercher sur google ( j’éxagère à peine ).…

10 ans pour le blog ! Lire la suite »

Prestashop : bloquer les mises à jour de modules dans l’administration

Présentation du problème et solution

C’est un comportement bien connu et assez embêtant auquel je m’attaque aujourd’hui.

Qui n’a jamais pesté d’avoir mis à jour un module dans le back office de Prestashop alors qu’on souhaitait uniquement le configurer ..

Par défaut lorsqu’une mise à jour d’un module est disponible, c’est l’action « Upgrade » qui est l’action par défaut.

Un clic trop rapide et on se retrouve avec une version non testée et donc potentiellement des erreurs sur son site.

J’ai donc créé un petit module qui permets de désactiver l’action du bouton de mise à jour et qui affiche un autre message à la place.

Il est possible de configurer le comportement ( normal ou bloqué ) directement depuis la configuration du module.

Fonctionnement technique

Pour gérer cela nous allons créer un module hh_modulesupdater

Ce module va utiliser la possibilité de surcharger les templates symfony du core en reprenant simplement leur chemin dans un module.

Nous allons donc créer un fichier :
modules/hh_modulesupdater/views/PrestaShop/Admin/Module/Includes/action_button.html.twig

Prestashop : bloquer les mises à jour de modules dans l’administration Lire la suite »

Utiliser et configurer un proxy socks en local avec votre serveur dédié

Un petit tutoriel rapide pour faire face à une problématique que j’ai rencontré récemment.

Avec mon fournisseur d’accès à internet je n’ai pas d’adresse ip fixe, c’est gênant pour accéder à certains environnements dont l’accès est soumis à des restrictions d’ips.

Je possède en revanche plusieurs serveurs dédiés sur internet qui eux ont bien des ips fixes.
Vous l’aurez compris l’idée va être de se connecter à travers l’un de ces serveurs pour obtenir une ip fixe également.

La configuration de cette connexion est facile et ne prendra pas plus de 2 minutes 🙂

Les prérequis sont les suivants :

  • Accès ssh à un serveur
  • Système linux ou WSL disponible
  • Extension FoxyProxy

Gestion de la connexion ssh

Pour se simplifier la vie on va configurer ce proxy directement dans le fichier ~/.ssh/config de la même manière que pour n’importe quelle connexion ssh :

Host herve.tunnel
 Hostname myserverNameOrIP
 User ServeurUser
 Port ServerPort
 DynamicForward 8000 #Attention à cette ligne

Remplacez bien évidemment les informations du hostname de l’user et du port par les accès à votre serveur.…

Utiliser et configurer un proxy socks en local avec votre serveur dédié Lire la suite »

Simplifiez vous la console sous windows avec Terminal

Pour des raisons techniques j’ai récemment du repasser sous windows pour quelques jours.

En étant habitué la console linux c’est un énorme retour en arrière d’utiliser la console standard de windows  ( cmd ) d’autant quelle ne gère pas nativement la connexion ssh

Mon usage de la console est essentiellement basé autour la connexion à des serveurs web, ou des commandes git sous windows j’utilise le sous-sytème wsl pour gérer toutes ces commandes.

J’utilisais déjà pour remédier à ça l’alternative cmder https://cmder.net/

Qui rendait déjà les choses bien plus pratiques avec sa gestion multi-onglets et le chargement de profils.
Mais  j’avais pas mal de problèmes dans la gestion des flèches lors de l’édition des fichiers avec vim qui me faisait souvent perdre du temps

J’ai donc profiter la sortie officielle de la version 1.0 de terminal et j’ai été assez séduit par son fonctionnement et son utilisation :

  • Gestion multi-onglets
  • Types de fenêtres ( cmd / powershell / wsl )

Si vous utilisez souvent la console sous windows je pense que c’est un outil que vous adopterez très vite 🙂

Vous pouvez l’installer depuis le lien suivant :
https://www.microsoft.com/fr-fr/p/windows-terminal/9n0dx20hk701?activetab=pivot:overviewtab

Simplifiez vous la console sous windows avec Terminal Lire la suite »

Commandes console git utiles

Dans le développement git est un outil très puissant et très pratique que j’utilise au quotidien.
Majoritairement via son intégration dans PhpStorm ( très intuitive )

Mais dans certains cas il est  nécessaire d’utiliser la ligne de commande
Voici donc une petite liste de commandes git utiles en fonction des situations

Configuration générale

Définir/modifier l’user et l’email du dépôt courant

git config user.name "Your username"
git config user.email "[email protected]"

 

Création d’un projet

Initialisation d’un projet local (dans le dossier courant )

git init .

Initialisation d’un projet distant ( dans le dossier courant )

git clone https://yourrepositoryurl.com/repo.git .

 

Gestion des fichiers

Ajout de modification

git add path

Annuler les modifications sur un fichier ou un dossier

git checkout -- path

 

Suivre l’état de mon dépôt local

Visualisation du statut global du dépôt

git status

Visualisation du statut global du dépôt en excluant un dossier en particulier ( themes et modules dans l’exemple )

git status .

Commandes console git utiles Lire la suite »