launchpad.pug 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  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. required,
  64. autofocus="true"
  65. )
  66. .form-group
  67. label(for='password') #{translate("password")}
  68. input.form-control#passwordField(
  69. type='password',
  70. name='password',
  71. placeholder="********",
  72. required,
  73. )
  74. .actions
  75. button.btn-primary.btn(
  76. type='submit'
  77. data-ol-disabled-inflight
  78. )
  79. span(data-ol-inflight="idle") #{translate("register")}
  80. span(hidden data-ol-inflight="pending") #{translate("registering")}…
  81. // Ldap Form
  82. if authMethod === 'ldap'
  83. h3 #{translate('ldap')}
  84. p
  85. | #{translate('ldap_create_admin_instructions')}
  86. form(
  87. data-ol-async-form
  88. data-ol-register-admin
  89. action="/launchpad/register_ldap_admin"
  90. method="POST"
  91. )
  92. input(name='_csrf', type='hidden', value=csrfToken)
  93. +formMessages()
  94. .form-group
  95. label(for='email') #{translate("email")}
  96. input.form-control(
  97. type='email',
  98. name='email',
  99. placeholder="email@example.com"
  100. required,
  101. autofocus="true"
  102. )
  103. .actions
  104. button.btn-primary.btn(
  105. type='submit'
  106. data-ol-disabled-inflight
  107. )
  108. span(data-ol-inflight="idle") #{translate("register")}
  109. span(hidden data-ol-inflight="pending") #{translate("registering")}…
  110. // Saml Form
  111. if authMethod === 'saml'
  112. h3 #{translate('saml')}
  113. p
  114. | #{translate('saml_create_admin_instructions')}
  115. form(
  116. data-ol-async-form
  117. data-ol-register-admin
  118. action="/launchpad/register_saml_admin"
  119. method="POST"
  120. )
  121. input(name='_csrf', type='hidden', value=csrfToken)
  122. +formMessages()
  123. .form-group
  124. label(for='email') #{translate("email")}
  125. input.form-control(
  126. type='email',
  127. name='email',
  128. placeholder="email@example.com"
  129. required,
  130. autofocus="true"
  131. )
  132. .actions
  133. button.btn-primary.btn(
  134. type='submit'
  135. data-ol-disabled-inflight
  136. )
  137. span(data-ol-inflight="idle") #{translate("register")}
  138. span(hidden data-ol-inflight="pending") #{translate("registering")}…
  139. br
  140. <!-- status indicators -->
  141. if adminUserExists
  142. .row
  143. .col-md-12.status-indicators
  144. h2 #{translate('status_checks')}
  145. <!-- ide js -->
  146. .row.row-spaced-small
  147. .col-sm-5
  148. | #{translate('editor_resources')}
  149. .col-sm-7
  150. +launchpad-check('ide')
  151. <!-- websocket -->
  152. .row.row-spaced-small
  153. .col-sm-5
  154. | #{translate('websockets')}
  155. .col-sm-7
  156. +launchpad-check('websocket')
  157. <!-- break -->
  158. hr.thin
  159. <!-- other actions -->
  160. .row
  161. .col-md-12
  162. h2 #{translate('other_actions')}
  163. h3 #{translate('send_test_email')}
  164. form.form(
  165. data-ol-async-form
  166. action="/launchpad/send_test_email"
  167. method="POST"
  168. )
  169. .form-group
  170. label(for="email") Email
  171. input.form-control(
  172. type="text"
  173. id="email"
  174. name="email"
  175. required
  176. )
  177. button.btn-primary.btn(
  178. type='submit'
  179. data-ol-disabled-inflight
  180. )
  181. span(data-ol-inflight="idle") #{translate("send")}
  182. span(hidden data-ol-inflight="pending") #{translate("sending")}…
  183. p
  184. +formMessages()
  185. <!-- break -->
  186. hr.thin
  187. <!-- Go to app -->
  188. .row
  189. .col-md-12
  190. .text-center
  191. br
  192. p
  193. a(href="/admin").btn.btn-info
  194. | Go To Admin Panel
  195. | &nbsp;
  196. a(href="/project").btn.btn-primary
  197. | Start Using #{settings.appName}
  198. br