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

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>
  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 %}