login.tx 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <div id="login">
  2. : include "jsalert.tx";
  3. <div>
  4. <img id="logo" src="/img/icon/favicon.svg" style="float:left" /><span style="font-family:courier;font-size:2rem;">CMS Login</span>
  5. </div>
  6. <div id="spacer" style="clear: both;"><br /></div>
  7. <form id="loginForm" method="POST" action="/auth">
  8. <input type="hidden" name="app" value="login" />
  9. <input type="hidden" name="to" value="<: $to :>" />
  10. Username<br />
  11. <div class="input-group">
  12. <label for="username">😎</span></label>
  13. <input required name="username" id="username" placeholder="AzureDiamond" value="" type="text" autofocus></input>
  14. </div>
  15. <br />
  16. Password<br />
  17. <div class="input-group">
  18. <label for="password">🔑</label>
  19. <input required name="password" id="password" placeholder="hunter2" value="" type="password"></input>
  20. </div>
  21. <br />
  22. <input type="submit" id="maximumGo" value="<: $btnmsg :>"></input>
  23. <!--
  24. External authentication provider data.
  25. Provider = Driver to use
  26. Data = JSON encoded blob of data gotten back from auth source
  27. -->
  28. <input type="hidden" id="extAuthProvider" value=""></input>
  29. <input type="hidden" id="extAuthData" value=""></input>
  30. </form>
  31. <br><br>
  32. <div id="matrixLogin" style="display:none;">
  33. <script defer src="/scripts/matrix-login.js"></script>
  34. <matrix-signin id="signin"></matrix-signin>
  35. <script>
  36. var hasusers = <: $hasusers :>;
  37. var loginBits = document.getElementById("matrixLogin");
  38. if(hasusers) {
  39. loginBits.style = "display:block";
  40. const signIn = document.querySelector('matrix-signin')
  41. signIn.addEventListener('success', ({ detail }) => {
  42. let form = document.getElementById("loginForm");
  43. form.querySelector("#extAuthProvider").value = "matrix";
  44. form.querySelector("#extAuthData").value = JSON.stringify(detail.user);
  45. form.submit();
  46. })
  47. } else {
  48. loginBits.remove();
  49. }
  50. </script>
  51. <matrix-signin-button target="signin">
  52. <span style="line-height: 2rem;">
  53. <img style="width: 24px; vertical-align: middle;" src="img/icon/matrix-element.svg"></img>
  54. Sign in with Matrix
  55. </span>
  56. </matrix-signin-button>
  57. </div>
  58. </div>