diff --git a/background/background.js b/background/background.js index c51ec0b..ffe8f68 100644 --- a/background/background.js +++ b/background/background.js @@ -742,7 +742,7 @@ function getEregRegistrDefaultPageUrl(callback) { }); } -function isEregKsrzisSignedInWithSpecificRole(tab, callback) { +function isEregKsrzisSignedInWithSpecificRole(tab, roleId, callback) { getRegistrCUDVyhledaniPacientaUrl(function(url) { fetch(url, { method: 'get' @@ -756,10 +756,11 @@ function isEregKsrzisSignedInWithSpecificRole(tab, callback) { { text: GET_SIGNED_USERNAME, data: { - text: text + "text": text, + "roleId": roleId } - }, function(activeUsername) { - callback(activeUsername); + }, function(results) { + callback(results); } ); }); @@ -1133,12 +1134,12 @@ function updateZadanka(tab, params) { var IsDisabledPopupAboutParamsFromPosledniZadanka = options.get(IS_DISABLED_POPUP_ABOUT_PARAMS_FROM_POSLEDNI_ZADANKA); var IsDisabledRedirectToPacientiCovid19 = options.get(IS_DISABLED_REDIRECT_TO_PACIENTI_COVID_19); - isEregKsrzisSignedInWithSpecificRole(tab, function(activeUsername) { - const redirectToEreg = activeUsername && IsDisabledRedirectToPacientiCovid19 != "true"; - if(activeUsername) { - params.set("OrdinaceVystavil", activeUsername); + isEregKsrzisSignedInWithSpecificRole(tab, ROLE_INDIKUJICI_OSOBA, function(results) { + const redirectToEreg = results && results.roleExists && IsDisabledRedirectToPacientiCovid19 != "true"; + if(results && results.username) { + params.set("OrdinaceVystavil", results.username); } - if (IsDisabledPopupAboutParamsFromPosledniZadanka != "true") { + if (redirectToEreg) { updateZadankaConfirmWindowsAboutParamsFromPosledniZadanka(tab, redirectToEreg, params.get("TestovanyCisloPojistence"), params, function(params) { setUserRole(ROLE_INDIKUJICI_OSOBA, function() { updateZadankaRedirect(tab, redirectToEreg, params); @@ -1229,4 +1230,4 @@ chrome.commands.onCommand.addListener(function(command) { break; default: } -}); \ No newline at end of file +}); diff --git a/content/content.js b/content/content.js index 78d9526..9426939 100644 --- a/content/content.js +++ b/content/content.js @@ -52,11 +52,24 @@ chrome.runtime.onMessage.addListener(function (msg, sender, sendResponse) { var responseDocument = parser.parseFromString(msg.data.text,"text/html"); var usernameElement = responseDocument.getElementsByClassName("status-bar_username"); + + var username = false; if(usernameElement && usernameElement[0] && usernameElement[0].innerText.trim()) { - sendResponse(usernameElement[0].innerText.trim()); - } else { - sendResponse(false); + username = usernameElement[0].innerText.trim(); + } + + var roleExists = false; + if(msg.data.roleId) { + var roleElement = responseDocument.evaluate("//a[contains(@onclick,'" + msg.data.roleId + "')]", responseDocument, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); + + if(roleElement.snapshotLength) { + roleExists = true; + } } + sendResponse({ + "username": username, + "roleExists": roleExists + }); } return true; }); @@ -1235,4 +1248,4 @@ if(robAdresaHtmlElement) { }; const observer = new MutationObserver(callback); observer.observe(robAdresaHtmlElement, config); -} \ No newline at end of file +}