passwordReset.pug 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. extends ../layout-website-redesign
  2. include ../_mixins/recaptcha
  3. include ../_mixins/notification
  4. block vars
  5. - var suppressNavbar = true
  6. - var suppressFooter = true
  7. - isWebsiteRedesign = true
  8. block content
  9. - var showCaptcha = settings.recaptcha && settings.recaptcha.siteKey && !(settings.recaptcha.disabled && settings.recaptcha.disabled.passwordReset)
  10. if showCaptcha
  11. script(
  12. type='text/javascript'
  13. nonce=scriptNonce
  14. src='https://www.recaptcha.net/recaptcha/api.js?render=explicit'
  15. )
  16. div(
  17. id='recaptcha'
  18. class='g-recaptcha'
  19. data-sitekey=settings.recaptcha.siteKey
  20. data-size='invisible'
  21. data-badge='inline'
  22. )
  23. main#main-content(data-ol-captcha-retry-trigger-area='')
  24. a.auth-aux-logo(href='/')
  25. img(src=buildImgPath('ol-brand/overleaf-o-dark.svg') alt=settings.appName)
  26. .auth-aux-container
  27. form(
  28. name='passwordResetForm'
  29. captcha-action-name=showCaptcha ? 'passwordReset' : false
  30. data-ol-async-form
  31. action='/user/password/reset'
  32. method='POST'
  33. captcha=showCaptcha ? '' : false
  34. )
  35. if error === 'password_reset_token_expired'
  36. h1.h3.mb-3.mt-0 #{translate("sorry_your_token_expired")}
  37. p #{translate('please_request_a_new_password_reset_email_and_follow_the_link')}.
  38. else
  39. h1.h3.mb-3.mt-0(data-ol-not-sent) #{translate("password_reset")}
  40. h1.h3.mb-3.mt-0(hidden data-ol-sent) #{translate("check_your_email")}
  41. p.mb-3.pb-3(data-ol-not-sent) #{translate("enter_your_email_address_below_and_we_will_send_you_a_link_to_reset_your_password")}.
  42. div(data-ol-not-sent)
  43. +formMessagesNewStyle
  44. if error && error !== 'password_reset_token_expired'
  45. +notification({ariaLive: 'assertive', type: 'error', className: 'mb-3', content: translate(error)})
  46. div(data-ol-custom-form-message='no-password-allowed-due-to-sso' hidden)
  47. +notification({ariaLive: 'polite', type: 'error', className: 'mb-3', content: translate('you_cant_reset_password_due_to_sso', {}, [{name: 'a', attrs: {href: '/sso-login'}}])})
  48. input(name='_csrf' type='hidden' value=csrfToken)
  49. .form-group.mb-3
  50. label.form-label(for='email') #{translate("email")}
  51. input#email.form-control(
  52. name='email'
  53. type='email'
  54. required
  55. autocomplete='username'
  56. autofocus
  57. )
  58. .actions
  59. button.btn.btn-primary.w-100.mb-3(
  60. type='submit'
  61. data-ol-disabled-inflight
  62. aria-label=translate('reset_password_sentence_case')
  63. )
  64. span(data-ol-inflight='idle')
  65. | #{translate("reset_password_sentence_case")}
  66. span(hidden data-ol-inflight='pending')
  67. | #{translate("requesting_password_reset")}…
  68. a.btn.btn-ghost.w-100.mb-3(href='/login') #{translate("back_to_log_in")}
  69. div(hidden data-ol-sent)
  70. p.mb-4 #{translate('password_reset_email_sent')}
  71. a.btn.btn-primary.w-100.mb-3(href='/login') #{translate('back_to_log_in')}
  72. if showCaptcha
  73. +recaptchaConditions