login.pug 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. extends ../layout-marketing
  2. block vars
  3. - bootstrap5PageStatus = 'disabled'
  4. block content
  5. main.content.content-alt#main-content
  6. .container
  7. .row
  8. .col-md-6.col-md-offset-3.col-lg-4.col-lg-offset-4
  9. .card
  10. .page-header
  11. if login_support_title
  12. h1 !{login_support_title}
  13. else
  14. h1 #{translate("log_in")}
  15. form(data-ol-async-form, name="loginForm", action='/login', method="POST")
  16. input(name='_csrf', type='hidden', value=csrfToken)
  17. +formMessages()
  18. +customFormMessage('invalid-password-retry-or-reset', 'danger')
  19. | !{translate('email_or_password_wrong_try_again_or_reset', {}, [{ name: 'a', attrs: { href: '/user/password/reset', 'aria-describedby': 'resetPasswordDescription' } }])}
  20. span.sr-only(id='resetPasswordDescription')
  21. | #{translate('reset_password_link')}
  22. +customValidationMessage('password-compromised')
  23. | !{translate('password_compromised_try_again_or_use_known_device_or_reset', {}, [{name: 'a', attrs: {href: 'https://haveibeenpwned.com/passwords', rel: 'noopener noreferrer', target: '_blank'}}, {name: 'a', attrs: {href: '/user/password/reset', target: '_blank'}}])}.
  24. .form-group
  25. input.form-control(
  26. type='email',
  27. name='email',
  28. required,
  29. placeholder='email@example.com',
  30. autofocus="true"
  31. )
  32. .form-group
  33. input.form-control(
  34. type='password',
  35. name='password',
  36. required,
  37. placeholder='********',
  38. )
  39. .actions
  40. button.btn-primary.btn(
  41. type='submit',
  42. data-ol-disabled-inflight
  43. )
  44. span(data-ol-inflight="idle") #{translate("login")}
  45. span(hidden data-ol-inflight="pending") #{translate("logging_in")}…
  46. a.pull-right(href='/user/password/reset') #{translate("forgot_your_password")}?
  47. if login_support_text
  48. hr
  49. p.text-center !{login_support_text}