launchpad.pug 6.6 KB

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