Dans le fichier MODULE.routing.yml on va utiliser le requirement « _custom_access »
module.ma_methode:
path: 'mon-module/mon-chemin'
defaults:
_controller: '\Drupal\module\Controller\monController::maMethode'
requirements:
_custom_access: '\Drupal\module\Controller\monController::maMethodeAccess'
Que l'on va implémenter dans notre contrôleur, ici monController.php :
public function maMethodeAccess() {
/** @var Request $request */
$request = \Drupal::request();
$ipAutorisees = \Drupal::config('iamyourstory.checkcard_api')->get('allowed_ips')
$ipAutorisees = explode(',', $ipAutorisees);
$ipAutorisees = array_map('trim', $ipAutorisees);
return AccessResult::allowedIf(\in_array($request->server->get('REMOTE_ADDR'), $ipAutorisees));
}
à noter :
- Les ip autorisées sont stockées en configuration via un formulaire de config, les ip sont séparées par une virgule, d'où le explode.
- J'utilise ensuite la fonction array_map('trim', $ipAutorisees) pour supprimer les éventuels espaces. Si la personne avait saisi « 127.0.0.1, 192.168.0.2 », mon tableau sans le trim sera ['127.0.0.1', ' 192.168.0.2'] (espace au départ de la seconde ip.)
Ajouter un commentaire