AllowedIps.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Developer\Model\Config\Backend;
  7. /**
  8. * Backend model for validating ip addresses entered in Developer Client Restrictions
  9. */
  10. class AllowedIps extends \Magento\Framework\App\Config\Value
  11. {
  12. /**
  13. * @var \Magento\Framework\Message\ManagerInterface
  14. */
  15. private $messageManager;
  16. /**
  17. * Escaper
  18. *
  19. * @var \Magento\Framework\Escaper
  20. */
  21. protected $escaper;
  22. /**
  23. * Constructor
  24. *
  25. * @param \Magento\Framework\Model\Context $context
  26. * @param \Magento\Framework\Registry $registry
  27. * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
  28. * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
  29. * @param \Magento\Framework\Message\ManagerInterface $messageManager
  30. * @param \Magento\Framework\Escaper $escaper
  31. * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
  32. * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
  33. * @param array $data
  34. */
  35. public function __construct(
  36. \Magento\Framework\Model\Context $context,
  37. \Magento\Framework\Registry $registry,
  38. \Magento\Framework\App\Config\ScopeConfigInterface $config,
  39. \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
  40. \Magento\Framework\Message\ManagerInterface $messageManager,
  41. \Magento\Framework\Escaper $escaper,
  42. \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
  43. \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
  44. array $data = []
  45. ) {
  46. $this->messageManager = $messageManager;
  47. $this->escaper = $escaper;
  48. parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
  49. }
  50. /**
  51. * Validate ip addresses before save
  52. *
  53. * @return $this
  54. */
  55. public function beforeSave()
  56. {
  57. $allowedIpsRaw = $this->escaper->escapeHtml($this->getValue());
  58. $noticeMsgArray = [];
  59. $allowedIpsArray = [];
  60. if (empty($allowedIpsRaw)) {
  61. return parent::beforeSave();
  62. }
  63. $dataArray = explode(',', $allowedIpsRaw);
  64. foreach ($dataArray as $data) {
  65. if (filter_var(trim($data), FILTER_VALIDATE_IP)) {
  66. $allowedIpsArray[] = $data;
  67. } else {
  68. $noticeMsgArray[] = $data;
  69. }
  70. }
  71. $noticeMsg = implode(',', $noticeMsgArray);
  72. if (!empty($noticeMsgArray)) {
  73. $this->messageManager->addNotice(
  74. __(
  75. __('The following invalid values cannot be saved: %values', ['values' => $noticeMsg])
  76. )
  77. );
  78. }
  79. $this->setValue(implode(',', $allowedIpsArray));
  80. return parent::beforeSave();
  81. }
  82. }