From 60409b5e8054a8d0d37439540b73bbcdcbd29bc7 Mon Sep 17 00:00:00 2001 From: andy-profileo Date: Thu, 28 Nov 2024 12:03:06 +0400 Subject: [PATCH] v1.1.9 - release --- classes/PrestaScanQueue.php | 9 + controllers/front/oauth2.php | 4 + github_images/logo.png | Bin 8899 -> 4923 bytes github_images/logo.svg | 170 +++++----------- github_images/partners/partner2.png | Bin 3170 -> 2176 bytes github_images/partners/partner4.png | Bin 4048 -> 2853 bytes logo.png | Bin 4800 -> 12502 bytes prestascansecurity.php | 53 ++++- src/OAuth2/Provider.php | 10 +- src/Tools.php | 2 +- translations/es.php | 3 + translations/fr.php | 5 + views/css/admin.1.1.6.css | 1 + views/css/modal.1.1.6.css | 12 +- views/img/Logo_PSSecurity.svg | 182 ++++++++++++------ views/img/icon_dashboard.png | Bin 573 -> 1457 bytes views/img/logo.png | Bin 8901 -> 16082 bytes views/img/logo.svg | 170 +++++----------- views/img/partners/partner2.png | Bin 2607 -> 2176 bytes views/img/partners/partner4.png | Bin 2472 -> 2853 bytes views/js/modal.js | 8 +- views/js/reports.js | 46 ++++- views/templates/admin/layouts/menu.tpl | 7 +- .../admin/partials/directories_listing.tpl | 6 +- .../templates/admin/partials/files_table.tpl | 12 +- .../admin/partials/home_no_scan_result.tpl | 50 ++--- .../admin/partials/module_unused.tpl | 6 +- .../admin/partials/module_vulnerable.tpl | 6 +- .../admin/partials/scan_to_retrieve.tpl | 31 +++ .../admin/reports/core_vulnerabilities.tpl | 6 +- .../templates/front/sitemonitored_changed.tpl | 4 + 31 files changed, 444 insertions(+), 359 deletions(-) create mode 100644 views/templates/admin/partials/scan_to_retrieve.tpl create mode 100644 views/templates/front/sitemonitored_changed.tpl diff --git a/classes/PrestaScanQueue.php b/classes/PrestaScanQueue.php index f8325a1..cc6306d 100644 --- a/classes/PrestaScanQueue.php +++ b/classes/PrestaScanQueue.php @@ -215,4 +215,13 @@ public static function getJobAlreadyInProgress($actionName, $time = 10) AND TIMESTAMPDIFF(MINUTE, date_add, now()) > ' . $time); return empty($jobId) ? false : $jobId; } + + public static function isJobToRetrieve($actionName) + { + $jobId = Db::getInstance()->getValue(' + SELECT `jobid` + FROM `' . _DB_PREFIX_ . self::$definition['table'] . '` + WHERE `action_name` = "' . pSQL($actionName) . '" AND `state` = "' . pSQL(self::$actionname['TORETRIEVE']) . '" ORDER BY `id` DESC'); + return empty($jobId) ? false : true; + } } diff --git a/controllers/front/oauth2.php b/controllers/front/oauth2.php index e93ce7f..0208001 100644 --- a/controllers/front/oauth2.php +++ b/controllers/front/oauth2.php @@ -50,6 +50,10 @@ public function init() public function initContent() { + // handle old site monitored change; retry a login with new site monitored + if (Tools::getValue('site_changed')) { + return $this->module->handleSiteMonitoredChanged(); + } // Check our sudo user token if (!$this->isSudoTokenValid()) { \PrestaScan\Tools::displayErrorAndDie(401, 'Token mismatch'); diff --git a/github_images/logo.png b/github_images/logo.png index 879480a46cee260fcd04d7cd59076ad22a6e2d3c..feeaf52fead4e2d4feb82921d59955bfbc828cfa 100644 GIT binary patch literal 4923 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 z - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/github_images/partners/partner2.png b/github_images/partners/partner2.png index 381668abe678a9ac46801e80d82f51f85d8f8b7a..48fa27bde53221c38ab7329486e0f15339e39097 100644 GIT binary patch literal 2176 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 diff --git a/github_images/partners/partner4.png b/github_images/partners/partner4.png index 2cce58b280d586f304af5183fd472fcc1cb20e82..4e64b80b97c93466489c4c43754e6e8e56d5cca7 100644 GIT binary patch literal 2853 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 diff --git a/logo.png b/logo.png index 03506ed22126ef1e4b940cee7edefde8ceed2a6a..9c7dfd07a305defb7b588cb2d696d8a3c96ea9d0 100644 GIT binary patch literal 12502 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

4Iq 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 = 'prestascansecurity'; $this->tab = 'others'; - $this->version = '1.1.8'; + $this->version = '1.1.9'; $this->author = 'PrestaScan'; $this->need_instance = false; $this->bootstrap = true; @@ -261,6 +261,28 @@ public function generateModuleHash() public function getContent() { + if ($this->isUserLoggedIn()) { + // check if selected url is correct on account + try { + $postBody = array( + 'shop_urls' => implode(';', array_map('urlencode', $this->getShopUrls())), + ); + $request = new \PrestaScan\Api\Request( + 'prestascan-api/v2/check-url', + 'POST', + $postBody + ); + $response = $request->getResponse(); + if (isset($response['error']) && $response['error']) { // disconnect + $this->logout(); + } + } catch (Exception $e) { + if ($e->getMessage() == 'Not logged in') { // + $this->logout(); + } + } + } + // Update the module if requested to do so $this->updateModule(); // Check for error message to display @@ -371,18 +393,20 @@ protected function displayInitialScanAndScanProgress() $displayInitialScan = false; } $progressScans = Configuration::get('PRESTASCAN_SCAN_PROGRESS'); + $scansToRetrieve = array(); if (!empty($progressScans)) { $progressScans = json_decode($progressScans, true); - foreach ($progressScans as $scan) { + foreach ($progressScans as $type => $scan) { + $scansToRetrieve[$type] = \PrestaScanQueue::isJobToRetrieve($type); if ($scan) { $displayInitialScan = false; - break; } } } $this->context->smarty->assign('displayInitialScan', $displayInitialScan); $this->context->smarty->assign('progressScans', $progressScans); + $this->context->smarty->assign('scansToRetrieve', $scansToRetrieve); } protected function assignAdminVariables($moduleNewVulnerabilitiesAlert) @@ -510,6 +534,8 @@ protected function includeAdminResources($moduleNewVulnerabilitiesAlert) 'checkbox_risk_label' => $this->l('I understand the risks associated with removing or uninstalling modules in PrestaShop and agree to proceed with caution, prioritizing a development environment.'), 'question_to_logout' => $this->l('Are you sure to log out?'), 'js_error_occured' => $this->l('An error occured while generating the report. This may be due to a timeout. Please try again.'), + 'js_ps_nodebug_error_occured' => $this->l('A error occured. Enable debug for more information and please try again.'), + 'js_ps_error_occured' => $this->l('A error occured. Please try again.'), 'question_to_logout' => $this->l('Are you sure to log out?'), 'js_description' => $this->l('Description'), 'text_confirm_log_me_out' => $this->l('Yes, log me out'), @@ -670,4 +696,25 @@ public function getWordTranslated($word) return ucfirst($criticity); } + + protected function logout() + { + // Remove the data in the database + \PrestaScanQueue::truncate(); + \PrestaScanVulnAlerts::truncate(); + // Delete cache files and configuration + \PrestaScan\Tools::resetModuleConfigurationAndCache(); + $this->isLoggedIn = false; + } + + public function handleSiteMonitoredChanged() + { + if (Context::getContext()->cookie->__isset('psscan_urlconfigbo')) { + $urlBackOffice = Context::getContext()->cookie->__get('psscan_urlconfigbo'); + Context::getContext()->cookie->__unset('psscan_urlconfigbo'); + Tools::redirectAdmin($urlBackOffice . '&site_changed=1'); + } else { + die($this->display(__FILE__, 'views/templates/front/sitemonitored_changed.tpl')); + } + } } diff --git a/src/OAuth2/Provider.php b/src/OAuth2/Provider.php index 219caba..ba87bc9 100644 --- a/src/OAuth2/Provider.php +++ b/src/OAuth2/Provider.php @@ -67,6 +67,10 @@ public function getAuthenticatedRequest($method, $url, $accessToken, array $opti curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3); curl_setopt($ch, CURLOPT_TIMEOUT, 10); + if (defined('_EOSC_MODE_DEV_') && _EOSC_MODE_DEV_) { + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); + } if (isset($options['body'])) { curl_setopt($ch, CURLOPT_POSTFIELDS, $options['body']); @@ -134,7 +138,11 @@ public function getAccessToken($grantType, array $options = []) curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params)); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3); curl_setopt($ch, CURLOPT_TIMEOUT, 10); - + if (defined('_EOSC_MODE_DEV_') && _EOSC_MODE_DEV_) { + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); + } + $response = $this->getResponse($ch); $parsedResponse = $this->parseResponse($response); diff --git a/src/Tools.php b/src/Tools.php index d1b487d..8d22d74 100644 --- a/src/Tools.php +++ b/src/Tools.php @@ -327,7 +327,7 @@ public static function formatDateString($date) if (!empty($date)) { $return = date('j F Y ', strtotime($date)); $return .= in_array($languageCode, array('fr','es')) ? $at[$languageCode] : ' at '; - $return .= date('h\hm', strtotime($date)); + $return .= date('h\hi', strtotime($date)); if (in_array($languageCode, array('fr','es'))) { $return = str_replace(array_keys($mois[$languageCode]), array_values($mois[$languageCode]), $return); } diff --git a/translations/es.php b/translations/es.php index b362029..b057582 100644 --- a/translations/es.php +++ b/translations/es.php @@ -227,6 +227,9 @@ $_MODULE['<{prestascansecurity}prestashop>scan_in_progress_96726308d783c8c6143d5b22fea5d7fb'] = 'Parece que el escaneo se ha estado ejecutando durante bastante tiempo, podría haber un problema.'; $_MODULE['<{prestascansecurity}prestashop>scan_in_progress_eb83cb7c01a3449487ded1a52bb1836c'] = 'Puede intentar forzar el escaneo para recuperar sus datos. Si esto no funciona, el escaneo se cancelará y podrá volver a intentarlo con un nuevo escaneo.'; $_MODULE['<{prestascansecurity}prestashop>scan_in_progress_ba387b98b9462fc96925aadf3f641e6c'] = 'Forzar recuperación o cancelar'; +$_MODULE['<{prestascansecurity}prestashop>scan_to_retrieve_9a2320c81ad462c52e15563fb7d3ee4d'] = 'Descargando los últimos escaneos'; +$_MODULE['<{prestascansecurity}prestashop>scan_to_retrieve_fc4d43c730c5d2ff49c6105683a5b70a'] = 'Se está descargando el último análisis automático para su visualización.'; +$_MODULE['<{prestascansecurity}prestashop>scan_to_retrieve_732e91e4bc78bb97e63473154025e419'] = 'Esta operación puede tardar unos momentos.'; $_MODULE['<{prestascansecurity}prestashop>scan_result_60a1994f5365c8a09a74ac6516b88629'] = 'Resultados del último escaneo'; $_MODULE['<{prestascansecurity}prestashop>scan_result_f91fe4f33093ee783af6952f653577d4'] = 'Recientemente se descubrió una nueva vulnerabilidad, verifique su alerta arriba y vuelva a hacer un escaneo si es necesario para actualizar sus resultados'; $_MODULE['<{prestascansecurity}prestashop>scan_result_48a098c06115a3db0efb6bcb5e31fd41'] = 'Vulnerabilidad'; diff --git a/translations/fr.php b/translations/fr.php index c84ca6a..349d7c8 100644 --- a/translations/fr.php +++ b/translations/fr.php @@ -11,6 +11,8 @@ $_MODULE['<{prestascansecurity}prestashop>prestascansecurity_a3f4cecacc0164fd6c90029641134efa'] = 'Je comprends les risques associés à la suppression ou la désinstallation de modules dans PrestaShop et accepte de procéder avec prudence, en privilégiant un environnement de développement.'; $_MODULE['<{prestascansecurity}prestashop>prestascansecurity_b9ff4aa1cb93a366b1973c5c3af52289'] = 'Êtes-vous sûr de vouloir vous déconnecter ?'; $_MODULE['<{prestascansecurity}prestashop>prestascansecurity_fd541b21fd5a44149a86bc83f5ed7739'] = 'Une erreur s\'est produite lors de la génération du rapport. Cela peut être dû à un délai d\'expiration. Veuillez réessayer.'; +$_MODULE['<{prestascansecurity}prestashop>prestascansecurity_d90237b6602334152220c3825a978ac3'] = 'Une erreur s\'est produite. Activez le mode debug pour plus d\'informations et veuillez réessayer.'; +$_MODULE['<{prestascansecurity}prestashop>prestascansecurity_9cdc88e43e892de1c3f8b949719ed4e2'] = 'Une erreur est survenue. Veuillez réessayer.'; $_MODULE['<{prestascansecurity}prestashop>prestascansecurity_b5a7adde1af5c87d7fd797b6245c2a39'] = 'Description'; $_MODULE['<{prestascansecurity}prestashop>prestascansecurity_9eadb78db102ef3b8dc9c43043d26422'] = 'Oui, déconnectez-moi'; $_MODULE['<{prestascansecurity}prestashop>prestascansecurity_01602a2174d298aea9aa785039556a5a'] = 'Cliquez ici pour actualiser la page'; @@ -227,6 +229,9 @@ $_MODULE['<{prestascansecurity}prestashop>scan_in_progress_96726308d783c8c6143d5b22fea5d7fb'] = 'Il semble que le scan dure depuis un certain temps maintenant, il pourrait y avoir un problème.'; $_MODULE['<{prestascansecurity}prestashop>scan_in_progress_eb83cb7c01a3449487ded1a52bb1836c'] = 'Vous pouvez essayer de forcer le scan pour récupérer ses données. Si cela ne fonctionne pas, le scan sera annulé et vous pourrez réessayer avec un nouveau scan.'; $_MODULE['<{prestascansecurity}prestashop>scan_in_progress_ba387b98b9462fc96925aadf3f641e6c'] = 'Forcer la récupération ou annuler'; +$_MODULE['<{prestascansecurity}prestashop>scan_to_retrieve_9a2320c81ad462c52e15563fb7d3ee4d'] = 'Téléchargement des derniers scans'; +$_MODULE['<{prestascansecurity}prestashop>scan_to_retrieve_fc4d43c730c5d2ff49c6105683a5b70a'] = 'Le dernier scan automatique est en cours de téléchargement pour son affichage.'; +$_MODULE['<{prestascansecurity}prestashop>scan_to_retrieve_732e91e4bc78bb97e63473154025e419'] = 'Cette opération peut prendre quelques instants.'; $_MODULE['<{prestascansecurity}prestashop>scan_result_60a1994f5365c8a09a74ac6516b88629'] = 'Derniers résultats de scan'; $_MODULE['<{prestascansecurity}prestashop>scan_result_f91fe4f33093ee783af6952f653577d4'] = 'Une nouvelle vulnérabilité a été récemment découverte, vérifiez l\'alerte ci-dessus et refaites un scan si nécessaire pour mettre à jour vos résultats'; $_MODULE['<{prestascansecurity}prestashop>scan_result_535e2de9168013bbfc31965016086243'] = 'Vulnérabilités'; diff --git a/views/css/admin.1.1.6.css b/views/css/admin.1.1.6.css index 6b2a761..be31bac 100644 --- a/views/css/admin.1.1.6.css +++ b/views/css/admin.1.1.6.css @@ -959,6 +959,7 @@ label.chkConfirmModuleUninstall input { width: 100%; position: absolute; bottom: 0; + left: 0; } #prestascansecurity_main_container #tab-report-home .scan_link.row a.btn { margin-top: 45px; diff --git a/views/css/modal.1.1.6.css b/views/css/modal.1.1.6.css index a4d5be3..2107876 100644 --- a/views/css/modal.1.1.6.css +++ b/views/css/modal.1.1.6.css @@ -70,7 +70,17 @@ padding: 15px 10px 10px; width: 100%; } - +#prestascansecurity_main_container .modal_content.has_error { + width: 35vw; + max-height: 70vh; +} +#prestascansecurity_main_container .modal_content.has_error .modal_body { + text-align: left; +} +#prestascansecurity_main_container .modal_content.has_error .modal_body pre { + overflow: auto; + max-height: 60vh; +} /* Add Animation */ @-webkit-keyframes animatetop { from {top:-300px; opacity:0} diff --git a/views/img/Logo_PSSecurity.svg b/views/img/Logo_PSSecurity.svg index 7b7656f..0261403 100644 --- a/views/img/Logo_PSSecurity.svg +++ b/views/img/Logo_PSSecurity.svg @@ -1,66 +1,136 @@ + viewBox="0 0 2551.7 834.1" style="enable-background:new 0 0 2551.7 834.1;" xml:space="preserve"> - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - diff --git a/views/img/icon_dashboard.png b/views/img/icon_dashboard.png index 4ce7d19325a30962ee57612cd4a6c83a51abbdbc..8eec0a24f8e40947f0828efaaca27a1c5e746e33 100644 GIT binary patch literal 1457 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|mUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lxRtf@J#ddWzYh$IT%VstT4fPE4;bsH1+JHo@{EISEfi{E8w==W>t3(ll+GC>+vK+}V5TAlYfnK%a zveAbJn;n;A+(UK-24*8q7sn6_!P1cX*}~BR^J0V7PW1ZQ7%J!*u(LyHQPX<675t$G z&E;J_Z0uiD-^g{Z`_^3vd#DMohAFtJble>`j&mK zIX6co>gm14lQaK*o2~!+%*@C|tZWBF@*QN_Wi6yD@6LEw!T67RedFt?C%dH>j=y~) z_|0T@aCs+dcKm_g6F+yKkh$VfYTe7}l?vo3AB5}+u2B(0rw^)<^wxg9eXt!S<2Jtg_hXWwMj^+n1v zR*M)uOfh^b%6e$_PC<*t_J2Q@JTnkk`~H*(@8JNu8q4p3r%zU|^?jIDx$|<2vv!XG zum94F3L8ZMR<;#4c`h0i7jBlWkaKpASQBev(kQ>ABPs6s6^3^yRfWHA)xNn~FSNXG z9^*y1Kcz3#&G5!?^#t)sv2(Mvu@2%{++6B9cC@z527};3#E2X3+nKjW9Ody zk@M9)@x|gB<+AQxa$EdONA{o8!d%_lh#VcIqdONVMo$*&c=F)kR?+X1mg;cb(Mq>I zxA^m?ShvQ&>OR5NT4w$a`Ig7$wLcYmIyGYLjZ#HP&YI72vPxbFzgznI!uLW3|NH-Y z*MvLmvCv)rRZ64PgnRF%N4pGPuXV2av4ekC%L|eskfgv+5atFNJ+SuqxMglCY7}-9Pg7*3oV)=U2O@%q#y^lorr`!lN)s z_SdHXRj;sw(5^Vu4`2OW-I=c(WIs!8&#yf%7oL6n>V@#j`I7gKiO0WV{V-L?&-uyz z{S4e$Vu1mfOQ$e@jC%a{efp6JN7@V{`3sWEeni@(UD}W&_BfTZ?m6c-+1GP<3%vx8B$4nGe*ght4`8?Hz|v8(cuIP%ET?eE@0t(n9+Sx<*I%;9{J;=@|mCPBF(3>2!Q)?f!@j<8F>C zruXFewmZ?#S_~XgFTfysz<0U#JL^G)cbAs^k=F0ag!qe)I>V|5w!m`gHRl(;0Ujmx VL4)<0cK`qY2>?k&PDHLkV1kD;_$B}V diff --git a/views/img/logo.png b/views/img/logo.png index 7ee776424b3b576f4a096ba9705e96cea2d70dd5..a636e3138fc329aa20e204862d252dfd1e0490ef 100644 GIT binary patch literal 16082 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 literal 8901 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 diff --git a/views/img/logo.svg b/views/img/logo.svg index eca88c4..9ad9f05 100644 --- a/views/img/logo.svg +++ b/views/img/logo.svg @@ -1,127 +1,43 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/views/img/partners/partner2.png b/views/img/partners/partner2.png index 8d85127238461901218136bff960481ec4ee4dbc..48fa27bde53221c38ab7329486e0f15339e39097 100644 GIT binary patch literal 2176 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 RlV<<`002ovPDHLkV1k||=f3~| diff --git a/views/img/partners/partner4.png b/views/img/partners/partner4.png index 6ed90eef33242345330318e8946916777489f5e5..4e64b80b97c93466489c4c43754e6e8e56d5cca7 100644 GIT binary patch literal 2853 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" + mainContent + "

"); // Add additional html to popup if (typeof customHtml !== 'undefined') { diff --git a/views/js/reports.js b/views/js/reports.js index 95ff497..aadf3c9 100644 --- a/views/js/reports.js +++ b/views/js/reports.js @@ -254,10 +254,40 @@ $(function () { }, loadReportError : function(res) { if (res.status === 200) { + var $response = $(res.responseText); + // Handle error in 1.6 + if ($response.find('.xdebug-error').length) { + var error_text = '' + js_ps_error_occured + '
'; + error_text += '
 '  + $response.find('.xdebug-error').text() + '
'; + window.prestascanSecurity_Modal.createDialog(error_text, [], null, true); + return; + } window.prestascanSecurity_Modal.createDialog(res.responseText, []); } else { - window.prestascanSecurity_Modal.createDialog(js_error_occured, []); + // handle prestashop error + var responseText = $(res.responseText).text(); + if (responseText) { + var $response = $(res.responseText); + + // Handle Error 500 in 1.7 + if ($response.find('.error-header').length) { + var error_text = '' + js_ps_nodebug_error_occured + '
'; + error_text += $response.find('.error-header').next().text(); + window.prestascanSecurity_Modal.createDialog(error_text, [], null, true); + return; + } + if ($response.find('.stacktrace').length > 0) { + var error_text = '' + js_ps_error_occured + '
'; + error_text += '
 '  + $response.find('.stacktrace').text() + '
'; + window.prestascanSecurity_Modal.createDialog(error_text, [], null, true); + return; + } + + // 1.6 + + } + window.prestascanSecurity_Modal.createDialog(js_ps_nodebug_error_occured, []); } }, postJsonAjax : function(url, data, handlerSuccess, handlerError) { @@ -802,4 +832,16 @@ window.addEventListener('load', () => { let cleanUrl = window.location.href.replace(/[\?&]subRefresh=1/, ''); window.history.replaceState({}, document.title, cleanUrl); } -}); \ No newline at end of file +}); + +document.addEventListener('DOMContentLoaded', function() { + if (window.opener && window.opener !== window) { + const urlParams = new URLSearchParams(window.location.search); + if (urlParams.has('site_changed')) { + // alert('site_changed 2'); + window.opener.openOauthPsScan(); + } else { + window.close(); // close popup + } + } +}); diff --git a/views/templates/admin/layouts/menu.tpl b/views/templates/admin/layouts/menu.tpl index 5ca258d..f6cb14d 100644 --- a/views/templates/admin/layouts/menu.tpl +++ b/views/templates/admin/layouts/menu.tpl @@ -74,15 +74,12 @@ {/if}