launchpad.pug 6.5 KB

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