login.pug 2.0 KB

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