launchpad.pug 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. extends ../../../../app/views/layout-marketing
  2. mixin launchpad-check(section)
  3. div(data-ol-launchpad-check=section)
  4. span(data-ol-inflight='pending')
  5. i.fa.fa-fw.fa-spinner.fa-spin
  6. span  #{translate('checking')}
  7. span(hidden data-ol-inflight='idle')
  8. div(data-ol-result='success')
  9. i.fa.fa-check
  10. span  #{translate('ok')}
  11. button.btn.btn-inline-link
  12. span.text-danger  #{translate('retry')}
  13. div(hidden data-ol-result='error')
  14. i.fa.fa-exclamation
  15. span  #{translate('error')}
  16. button.btn.btn-inline-link
  17. span.text-danger  #{translate('retry')}
  18. .alert.alert-danger
  19. span(data-ol-error)
  20. block entrypointVar
  21. - entrypoint = 'modules/launchpad/pages/launchpad'
  22. block vars
  23. - metadata = metadata || {}
  24. - bootstrap5PageStatus = 'disabled'
  25. block append meta
  26. meta(name='ol-adminUserExists' data-type='boolean' content=adminUserExists)
  27. meta(name='ol-ideJsPath' content=buildJsPath('ide.js'))
  28. block content
  29. script(
  30. type='text/javascript'
  31. nonce=scriptNonce
  32. src=(wsUrl || '/socket.io') + '/socket.io.js'
  33. )
  34. #main-content.content.content-alt
  35. .container
  36. .row
  37. .col-md-8.col-md-offset-2
  38. .card.launchpad-body
  39. .row
  40. .col-md-12
  41. .text-center
  42. h1 #{translate('welcome_to_sl')}
  43. p
  44. img(src=buildImgPath('/ol-brand/overleaf-o.svg'))
  45. <!-- wrapper -->
  46. .row
  47. .col-md-8.col-md-offset-2
  48. <!-- create first admin form -->
  49. if !adminUserExists
  50. .row(data-ol-not-sent)
  51. .col-md-12
  52. h2 #{translate('create_first_admin_account')}
  53. // Local Auth Form
  54. if authMethod === 'local'
  55. form(
  56. data-ol-async-form
  57. data-ol-register-admin
  58. action='/launchpad/register_admin'
  59. method='POST'
  60. )
  61. input(name='_csrf' type='hidden' value=csrfToken)
  62. +formMessages
  63. .form-group
  64. label(for='email') #{translate("email")}
  65. input.form-control(
  66. name='email'
  67. type='email'
  68. placeholder='email@example.com'
  69. autocomplete='username'
  70. required
  71. autofocus='true'
  72. )
  73. .form-group
  74. label(for='password') #{translate("password")}
  75. input#passwordField.form-control(
  76. name='password'
  77. type='password'
  78. placeholder='********'
  79. autocomplete='new-password'
  80. required
  81. )
  82. .actions
  83. button.btn-primary.btn(type='submit' data-ol-disabled-inflight)
  84. span(data-ol-inflight='idle') #{translate("register")}
  85. span(hidden data-ol-inflight='pending') #{translate("registering")}…
  86. // Ldap Form
  87. if authMethod === 'ldap'
  88. h3 #{translate('ldap')}
  89. p
  90. | #{translate('ldap_create_admin_instructions')}
  91. form(
  92. data-ol-async-form
  93. data-ol-register-admin
  94. action='/launchpad/register_ldap_admin'
  95. method='POST'
  96. )
  97. input(name='_csrf' type='hidden' value=csrfToken)
  98. +formMessages
  99. .form-group
  100. label(for='email') #{translate("email")}
  101. input.form-control(
  102. name='email'
  103. type='email'
  104. placeholder='email@example.com'
  105. autocomplete='username'
  106. required
  107. autofocus='true'
  108. )
  109. .actions
  110. button.btn-primary.btn(type='submit' data-ol-disabled-inflight)
  111. span(data-ol-inflight='idle') #{translate("register")}
  112. span(hidden data-ol-inflight='pending') #{translate("registering")}…
  113. // Saml Form
  114. if authMethod === 'saml'
  115. h3 #{translate('saml')}
  116. p
  117. | #{translate('saml_create_admin_instructions')}
  118. form(
  119. data-ol-async-form
  120. data-ol-register-admin
  121. action='/launchpad/register_saml_admin'
  122. method='POST'
  123. )
  124. input(name='_csrf' type='hidden' value=csrfToken)
  125. +formMessages
  126. .form-group
  127. label(for='email') #{translate("email")}
  128. input.form-control(
  129. name='email'
  130. type='email'
  131. placeholder='email@example.com'
  132. autocomplete='username'
  133. required
  134. autofocus='true'
  135. )
  136. .actions
  137. button.btn-primary.btn(type='submit' data-ol-disabled-inflight)
  138. span(data-ol-inflight='idle') #{translate("register")}
  139. span(hidden data-ol-inflight='pending') #{translate("registering")}…
  140. br
  141. <!-- status indicators -->
  142. if adminUserExists
  143. .row
  144. .col-md-12.status-indicators
  145. h2 #{translate('status_checks')}
  146. <!-- websocket -->
  147. .row.row-spaced-small
  148. .col-sm-5
  149. | #{translate('websockets')}
  150. .col-sm-7
  151. +launchpad-check('websocket')
  152. <!-- break -->
  153. hr.thin
  154. <!-- other actions -->
  155. .row
  156. .col-md-12
  157. h2 #{translate('other_actions')}
  158. h3 #{translate('send_test_email')}
  159. form.form(
  160. data-ol-async-form
  161. action='/launchpad/send_test_email'
  162. method='POST'
  163. )
  164. .form-group
  165. label(for='email') Email
  166. input.form-control(name='email' type='text' id='email' required)
  167. button.btn-primary.btn(type='submit' data-ol-disabled-inflight)
  168. span(data-ol-inflight='idle') #{translate("send")}
  169. span(hidden data-ol-inflight='pending') #{translate("sending")}…
  170. p
  171. +formMessages
  172. <!-- break -->
  173. hr.thin
  174. <!-- Go to app -->
  175. .row
  176. .col-md-12
  177. .text-center
  178. br
  179. p
  180. a.btn.btn-info(href='/admin')
  181. | Go To Admin Panel
  182. | &nbsp;
  183. a.btn.btn-primary(href='/project')
  184. | Start Using #{settings.appName}
  185. br