vendor/pimcore/pimcore/bundles/AdminBundle/Resources/views/Admin/Login/login.html.twig line 1

Open in your IDE?
  1. {% extends '@PimcoreAdmin/Admin/Login/layout.html.twig' %}
  2. {% block content %}
  3. <div id="loginform">
  4.     <form id="form-element" method="post" action="{{ path('pimcore_admin_login_check', {'perspective' : app.request.get('perspective')|striptags}) }}">
  5.         {% if error is defined %}
  6.         <div class="text error">
  7.             {{ error|trans([],'admin')|raw }}
  8.         </div>
  9.         {% endif %}
  10.         <input type="text" name="username" autocomplete="username" placeholder="{{ 'username'|trans([], 'admin') }}" required autofocus>
  11.         <input type="password" name="password" autocomplete="current-password" placeholder="{{ 'password'|trans([], 'admin') }}" required>
  12.         <input type="hidden" name="csrfToken" id="csrfToken" value="{{ pimcore_csrf.getCsrfToken() }}">
  13.         <button type="submit">{{ 'login'|trans([], 'admin') }}</button>
  14.     </form>
  15.     <a href="{{ path('pimcore_admin_login_lostpassword') }}" class="lostpassword">{{ 'Forgot your password'|trans([], 'admin') }}?</a>
  16. </div>
  17. {% if not browserSupported %}
  18. <div id="browserinfo">
  19.     <div class="text">
  20.         {{ 'Your browser is not supported. Please install the latest version of one of the following browsers.'|trans([], 'admin') }}
  21.     </div>
  22.     <div class="text browserinfo">
  23.         <a href="https://www.google.com/chrome" target="_blank" rel="noopener noreferrer" title="Chrome"><img src="/bundles/pimcoreadmin/img/login/chrome.svg" alt="Chrome"/></a>
  24.         <a href="https://www.mozilla.org/firefox" target="_blank" rel="noopener noreferrer" title="Firefox"><img src="/bundles/pimcoreadmin/img/login/firefox.svg" alt="Firefox"/></a>
  25.         <a href="https://www.apple.com/safari" target="_blank" rel="noopener noreferrer" title="Safari"><img src="/bundles/pimcoreadmin/img/login/safari.svg" alt="Safari"/></a>
  26.         <a href="https://www.microsoft.com/edge" target="_blank" rel="noopener noreferrer" title="Edge"><img src="/bundles/pimcoreadmin/img/login/edge.svg" alt="Edge"/></a>
  27.     </div>
  28.     <a href="#" onclick="showLogin();">{{ 'Click here to proceed'|trans([], 'admin') }}</a>
  29. </div>
  30. <script type="text/javascript">
  31.     function showLogin() {
  32.         document.getElementById('loginform').style.display = 'block';
  33.         document.getElementById('browserinfo').style.display = 'none';
  34.     }
  35. </script>
  36. <style type="text/css">
  37.     #loginform {
  38.         display: none;
  39.     }
  40. </style>
  41. {% endif %}
  42. {% endblock %}
  43. {% block below_footer %}
  44. <script {{ pimcore_csp.getNonceHtmlAttribute()|raw }}>
  45.     {% if deeplink is not defined %}
  46.     // clear opened tabs store
  47.     localStorage.removeItem("pimcore_opentabs");
  48.     {% endif %}
  49.     // hide symfony toolbar by default
  50.     var symfonyToolbarKey = 'symfony/profiler/toolbar/displayState';
  51.     if(!window.localStorage.getItem(symfonyToolbarKey)) {
  52.         window.localStorage.setItem(symfonyToolbarKey, 'none');
  53.     }
  54.     // CSRF token refresh
  55.     var formElement = document.getElementById('form-element');
  56.     var csrfRefreshInProgress = false;
  57.     function refreshCsrfToken() {
  58.         csrfRefreshInProgress = true;
  59.         formElement.style.opacity = '0.3';
  60.         var request = new XMLHttpRequest();
  61.         request.open('GET', '{{ path("pimcore_admin_login_csrf_token") }}');
  62.         request.onload = function () {
  63.             if (this.status >= 200 && this.status < 400) {
  64.                 var res = JSON.parse(this.response);
  65.                 document.getElementById('csrfToken').setAttribute('value', res['csrfToken']);
  66.                 formElement.style.opacity = '1';
  67.                 csrfRefreshInProgress = false;
  68.             }
  69.         };
  70.         request.send();
  71.     }
  72.     document.addEventListener('visibilitychange', function(ev) {
  73.         if(document.visibilityState === 'visible') {
  74.             refreshCsrfToken();
  75.         }
  76.     });
  77.     window.setInterval(refreshCsrfToken, {{ csrfTokenRefreshInterval }});
  78.     formElement.addEventListener("submit", function(evt) {
  79.         if(csrfRefreshInProgress) {
  80.             evt.preventDefault();
  81.         }
  82.     }, true);
  83. </script>
  84. {{ pimcore_breach_attack_random_content() }}
  85. {% endblock %}