script.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. class LoginPage {
  2. start() {
  3. this.loginInput = DOM.get('.login-form>.login-form-login>.login-form-login-input').focus();
  4. this.passwordInput = DOM.get('.login-form>.login-form-password>.login-form-password-input');
  5. this.loginButton = DOM.get('.login-form>.login-form-button');
  6. this.failureText = DOM.get('.login-form>.login-form-failure');
  7. this.registerEventHandlers();
  8. return this;
  9. }
  10. registerEventHandlers() {
  11. this.loginButton.on(DOM.Events.Click, this.authorize.bind(this));
  12. window_.on(DOM.Events.KeyDown, (e) => {
  13. if(e.key === DOM.Keys.Enter)
  14. this.authorize();
  15. });
  16. }
  17. authorize(e) {
  18. const login = this.loginInput.getValue();
  19. const password = this.passwordInput.getValue();
  20. fetch('/authorize', {
  21. method: 'POST',
  22. headers:{
  23. 'Content-Type': 'application/x-www-form-urlencoded'
  24. },
  25. body: new URLSearchParams({
  26. 'login': login,
  27. 'password': password
  28. })
  29. }).then((res) => {
  30. if(res.status === 200)
  31. Url.goTo('/');
  32. else if(res.status === 403)
  33. this.failureText.setInnerHTML('Wrong login or password');
  34. else
  35. this.failureText.setInnerHTML('Internal server error');
  36. });
  37. }
  38. }
  39. window_.on(DOM.Events.Load, (e) => {
  40. window.page = new LoginPage().start();
  41. });