https://my.consoloservices.com/login

Submitted URL:
https://my.consoloservices.com/Redirected
Report Finished:

The outgoing links identified from the page

JavaScript Variables · 7 found

Global JavaScript variables loaded on the window object of a page, are variables declared outside of functions and accessible from anywhere in the code within the current scope

Console log messages · 1 found

Messages logged to the web console

HTML

The raw HTML body of the page

<!DOCTYPE html><html lang="en"><head>
<meta charset="utf-8">
<meta content="(c) Copyright 2024 WellSky Services Group" name="copyright">
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<link href="/favicon.ico" rel="favicon">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500" rel="preload">
<link rel="stylesheet" media="all" href="/assets/session_template/application-5ba09940cbf04d91de1bab7b393697291f8c348881fde0965577bc3dfe5736b8.css">
<script crossorigin="anonymous" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="/assets/session_template/application-885ba5eefcf806dd7dc7d1dfbd690a6aa29cfe88d6b8bbe3edd480384baed80a.js"></script>
<meta name="csrf-param" content="authenticity_token">
<meta name="csrf-token" content="CvIYrndjC78eLRqM/Sf3D7qFjCNR1PF/z5LyXcMWsKHqIFQ3We0UroCo5m4ITrdU057U/1NAKcE6dx0RjZQ7jw==">
<title>WellSky Hospice and Palliative</title>
</head>
<body class="mdc-typography">
<div class="drawer-frame-root">
<div class="drawer-frame-app-content drawer-background">
<header class="mdc-top-app-bar mdc-top-app-bar--fixed drawer-top-app-bar px-2" id="app-bar">
<div class="mdc-top-app-bar__row">
<section class="mdc-top-app-bar__section mdc-top-app-bar__section--align-start d-none d-md-flex">
<span>
<img class="mr-3" href="https://wellsky.com" target="_blank" alt="WellSky Logo" width="52px" height="52px" src="/assets/logos/WS_Icon-09cf56f711290056255afbc2533566fe27bd841133ecf9189e33443daadc7977.svg">
</span>
<a class="mdc-button mdc-button--dense mdc-ripple-upgraded text-capitalize" href="https://wellsky.com" target="_blank">
<span class="mdc-button__label">
Home
</span>
</a>
<a class="mdc-button mdc-button--dense mdc-ripple-upgraded text-capitalize" href="https://wellsky.com/solutions/" target="_blank">
<span class="mdc-button__label">
Solutions
</span>
</a>
<a class="mdc-button mdc-button--dense mdc-ripple-upgraded text-capitalize" href="https://wellsky.com/support/" target="_blank">
<span class="mdc-button__label">
Support
</span>
</a>
<section class="mdc-top-app-bar__section mdc-top-app-bar__section--align-end d-none d-md-flex">
<span class="pr-2"></span>
<span id="release-number">Release 233</span>
<div class="d-none" id="timeout"></div>
<div class="d-none" id="logout"></div>
</section>
</section>
</div>
</header>
<main class="drawer-main-content" id="main-content">
<div class="grid">
<div class="mdc-layout-grid" id="login-grid">
<div class="mdc-layout-grid__inner">
<div class="mdc-layout-grid__cell mdc-layout-grid__cell--span-3-desktop mdc-layout-grid__cell--span-1-tablet"></div>
<div class="mdc-layout-grid__cell mdc-layout-grid__cell--span-6-desktop mdc-layout-grid__cell--span-6-tablet mdc-layout-grid__cell--span-4-phone mdc-layout-grid__cell--align-middle">
<div class="mdc-card mdc-card--outlined card">
<div class="p-5 text-center" id="login">
<div class="d-block">
<img alt="WellSky Hospice &amp; PalliativeLogo" width="273px" height="69px" src="/assets/logos/wellsky-color-logo-cropped-73f3ebef5a128c15e484684047a80bd4337115ad7dfa84b7d78cbdfad98ec925.png">
<h1 class="pb-3 pt-1">Hospice and Palliative</h1>
<div class="warnings mt-1 mb-4">
<div class="badge">
<div class="md-icon alert-icon">
<i class="material-icons">warning</i>
</div>
</div>
<div class="body">
<h2>Warning</h2>
<ul>
<li>We have detected that you may be in Private Browsing mode. Some features will not work as expected.</li>
</ul>
</div>
</div>
<div id="login-phases"><form><!----> <div class="mdc-text-field mdc-text-field--outlined w-100 mt-2"><input id="email" name="email" type="email" class="mdc-text-field__input"> <div class="mdc-notched-outline mdc-notched-outline--upgraded mdc-notched-outline--notched"><div class="mdc-notched-outline__leading"></div> <div class="mdc-notched-outline__notch"><label for="email" class="mdc-floating-label mdc-floating-label--float-above">Email</label></div> <div class="mdc-notched-outline__trailing"></div></div></div> <div class="d-flex justify-content-end align-items-center mt-2 mx-n2 pt-1"><a href="https://wellsky-ciam.okta.com/enduser/settings" id="passwordReset_lnk" class="mdc-button mdc-button--dense mdc-typography--caption mdc-theme--secondary">Forgot Password or Unlock Account</a></div> <button id="login_btn" type="submit" class="button darken-1 indigo mdc-button mdc-button--unelevated mdc-ripple-upgraded mdc-typography--body1 mt-4 text-capitalize w-100"><span class="mdc-button__label">Next</span> <!----></button></form></div>
</div>
</div>
</div>
</div>
<div class="mdc-layout-grid__cell mdc-layout-grid__cell--span-3-desktop mdc-layout-grid__cell--span-1-tablet"></div>
</div>
<footer class="mdc-typography--body2 text-center pt-2" id="footer">
<p class="my-1">
</p><div>
Copyright © 2024 WellSky. All rights reserved.
</div>
<a href="https://wellsky.com/terms-of-use/" target="_blank">Terms of use</a>
|
<a href="https://wellsky.com/patents/" target="_blank">Patents</a>
|
<a href="https://wellsky.com/privacy-policy/" target="_blank">Privacy policy</a>
<p></p>
</footer>
</div>
<script id="login-phase-discovery" type="text/x-template">
<form v-on:submit='checkUsername'>
<errors :errors='errors' class='mb-4' v-if='errors'></errors>
<div class='mdc-text-field mdc-text-field--outlined w-100 mt-2'>
<input class='mdc-text-field__input' id='email' name='email' type='email' v-focus v-model='shared.username'>
<div class='mdc-notched-outline mdc-notched-outline--upgraded mdc-notched-outline--notched'>
<div class='mdc-notched-outline__leading'></div>
<div class='mdc-notched-outline__notch'>
<label class='mdc-floating-label mdc-floating-label--float-above' for='email' style=''>Email</label>
</div>
<div class='mdc-notched-outline__trailing'></div>
</div>
</div>
<div class='d-flex justify-content-end align-items-center mt-2 mx-n2 pt-1'>
<a class='mdc-button mdc-button--dense mdc-typography--caption mdc-theme--secondary' href='https://wellsky-ciam.okta.com/enduser/settings' id='passwordReset_lnk'>Forgot Password or Unlock Account</a>
</div>
<button :disabled='checking' class='button darken-1 indigo mdc-button mdc-button--unelevated mdc-ripple-upgraded mdc-typography--body1 mt-4 text-capitalize w-100' id='login_btn' type='submit'>
<span class='mdc-button__label' v-if='!checking'>Next</span>
<spinner-small v-if='checking'></spinner-small>
</button>
</form>
</script>
<script id="login-phase-local" type="text/x-template">
<form v-on:submit='login'>
<errors :errors='errors' class='mb-4' v-if='errors'></errors>
<div class='mdc-text-field mdc-text-field--disabled mdc-text-field--outlined w-100 mt-2'>
<input class='mdc-text-field__input' disabled='true' id='email' name='email' type='email' v-model='shared.username'>
<div class='mdc-notched-outline mdc-notched-outline--upgraded mdc-notched-outline--notched'>
<div class='mdc-notched-outline__leading'></div>
<div class='mdc-notched-outline__notch'>
<label class='mdc-floating-label mdc-floating-label--float-above' for='email' style=''>Email</label>
</div>
<div class='mdc-notched-outline__trailing'></div>
</div>
</div>
<div class='mdc-text-field mdc-text-field--outlined w-100 mt-4'>
<input class='mdc-text-field__input' id='password' name='password' type='password' v-focus v-model='password'>
<div class='mdc-notched-outline mdc-notched-outline--upgraded mdc-notched-outline--notched'>
<div class='mdc-notched-outline__leading'></div>
<div class='mdc-notched-outline__notch'>
<label class='mdc-floating-label mdc-floating-label--float-above' for='password' style=''>Password</label>
</div>
<div class='mdc-notched-outline__trailing'></div>
</div>
</div>
<div class='d-flex justify-content-between align-items-center mt-2 mx-n2 pt-1'>
<a class='darken-1 indigo mdc-button mdc-button--dense mdc-theme--secondary mdc-typography--caption white-text' id='back-link' v-on:click='cancel'>Go Back</a>
<a class='mdc-button mdc-button--dense mdc-typography--caption mdc-theme--secondary' href='https://wellsky-ciam.okta.com/enduser/settings' id='passwordReset_lnk'>Forgot Password or Unlock Account</a>
</div>
<button :disabled='checking' class='button darken-1 indigo mdc-button mdc-button--unelevated mdc-ripple-upgraded mdc-typography--body1 mt-4 text-capitalize w-100' id='login_btn' type='submit'>
<span class='mdc-button__label' v-if='!checking'>Login</span>
<spinner-small v-if='checking'></spinner-small>
</button>
</form>
</script>
<script id="login-phase-federated" type="text/x-template">
<div class='flex-row'>
<spinner-small class='margin-right-sm'></spinner-small>
<p class='flex'>You are being redirected to your organization's login page.</p>
</div>
</script>
<script>
  $(function() {
    /**
     * Check if a username is federated or not.
     */
    Vue.component('discovery', {
      template: '#login-phase-discovery',
      props: ['shared'],
      data: function() {
        return {
          checking: false,
          errors: null
        };
      },
      methods: {
        checkUsername: function(event) {
          event.preventDefault();
          event.stopPropagation();
          this.errors = null;
          this.checking = true;
  
          fetch('/api/v1/auth/discover?' + queryParams({email: this.shared.username}), {method: 'GET'})
            .then((resp) => {
              if (resp.headers.get('Content-Type').match(/application\/json/)) {
                return resp.json();
              } else {
                return resp.text().then((text) => {
                  throw new Error(text);
                });
              }
            })
            .then((data) => {
              if (data.errors) {
                this.checking = false;
                this.errors = data.errors;
              } else if (data.federated) {
                this.shared.phase = 'federated-login';
                var target = JSON.stringify({app_id: this.shared.app_id, app_subdomain: this.shared.app_subdomain});
                document.cookie = 'app_target=' + encodeURIComponent(target) + ';path=/';
                window.location.href = data.redirect;
              } else {
                this.shared.phase = 'local-login';
              }
            })
            .catch((e) => {
              this.checking = false;
              this.errors = [e.message];
            });
        }
      }
    });
  
    /**
     * Perform a login for a local user.
     */
    Vue.component('local-login', {
      template: '#login-phase-local',
      props: ['shared'],
      data: function() {
        return {
          checking: false,
          password: null,
          errors: null,
        };
      },
      methods: {
        login: function(event) {
          event.preventDefault();
          event.stopPropagation();
          this.errors = null;
          this.checking = true;
  
          fetch('/api/v1/login', {
            method: 'POST',
            headers: {'Content-Type': 'application/json'},
            // this forces cookies to be sent with the request. we don't need that, but in Safari < 12, *received*
            // cookies will not be correctly set unless this is here
            credentials: 'include',
            body: JSON.stringify({
              username: this.shared.username,
              password: this.password
            })
          })
            .then((resp) => {
              if (resp.headers.get('Content-Type').match(/application\/json/)) {
                return resp.json();
              } else {
                return resp.text().then((text) => {
                  throw new Error(text);
                });
              }
            })
            .then((data) => {
              if (data.errors) {
                this.password = null;
                this.checking = false;
                this.errors = data.errors;
              } else {
                window.location.href = '/login/finish?' + queryParams({
                  app_id: this.shared.app_id,
                  app_subdomain: this.shared.app_subdomain
                });
              }
            })
            .catch((e) => {
              this.password = null;
              this.checking = false;
              this.errors = [e.message];
            })
        },
        cancel: function() {
          this.shared.phase = 'discovery';
        }
      }
    });
  
    Vue.component('federated-login', {
      template: '#login-phase-federated',
      props: ['shared']
    });
  
    /**
     * Root Vue app. Uses a dynamic component based on the value of shared.phase.
     */
    new Vue({
      el: '#login-phases',
      data: {
        shared: {
          phase: 'discovery',
          username: "",
          app_id: "",
          app_subdomain: ""
        }
      }
    });
  
    function queryParams(params) {
      return Object.keys(params)
        .reduce((acc, key) => {
          var val = params[key];
          if (val) {
            acc.push(key + '=' + encodeURIComponent(val));
          }
          return acc;
        }, [])
        .join('&');
    }
  
    /**
      * Test for private browsing mode.
      */
    if ($('#timeout').text() === 'true') {
      if (history.pushState && !(window.location.search.indexOf('timeout') > -1)) {
        var updatedUrl = `${window.location.protocol}//${window.location.host}${window.location.pathname}${window.location.search}${window.location.search ? '&timeout=true' : '?timeout=true'}`;
        window.history.pushState({path: updatedUrl}, '', updatedUrl);
      }
    }
  
    if ($('#logout').text() === 'true') {
      if (history.pushState && !(window.location.search.indexOf('logout') > -1)) {
        var updatedUrl = `${window.location.protocol}//${window.location.host}${window.location.pathname}${window.location.search}${window.location.search ? '&logout=true' : '?logout=true'}`;
        window.history.pushState({path: updatedUrl}, '', updatedUrl);
      }
    }
  
    // attempts to check for private browsing mode
    if (typeof Promise !== 'undefined') {
      var privateBrowsingPromise = new Promise(function(resolve, reject) {
        var db,
          on = function() { resolve(true); },
          off = function() { resolve(false); },
          tryLocalStorage = function() {
            try {
              localStorage.length ? off() : (localStorage.x = 1, localStorage.removeItem('x'), off());
            } catch (e) {
              navigator.cookieEnabled ? on() : off();
            }
          };
  
        window.webkitRequestAnimationFrame && window.webkitRequestFileSystem ? window.webkitRequestFileSystem(0, 0, off, on)
          : 'MozAppearance' in document.documentElement.style ? (db = indexedDB.open('test'), db.onerror = on, db.onsuccess = off)
          : /constructor/i.test(window.HTMLElement) || window.safari ? tryLocalStorage()
          : !window.indexedDB && (window.PointerEvent || window.MSPointerEvent) ? on()
          : off();
      });
  
      privateBrowsingPromise.then(function(privateBrowsingEnabled) {
        if (privateBrowsingEnabled) {
          $('.warnings').css('display', 'flex');
        }
      });
    }
  });
</script>

</div>
</main>
</div>
</div>

<script>
  $(function() {
    // fetch release number asyncronously so there's NO CHANCE a downed release service could bring down the login screen
    $.get("/api/v1/about/release", function(release) {
        if (release.number) {
          // For CEHRT, we're certified to the version shown on this page. So we MUST only show them major version number!
          var major = release.number.split('.')[0];
          $("#release-number").text("Release " + major);
        }
      });
    });
</script>
</body></html>