OSDN Git Service

template: fix login modal dialog
[newslash/newslash.git] / src / newslash_web / public / js / login.js
1 var login = {};
2 var vmLogin;
3
4 login.run = function run(params) {
5
6   $(".toggle-login-modal").on('click', function () {
7     console.log("toggle-login-modal");
8     $("#login-modal").toggleClass("open");
9     return false;
10   });
11     
12   var elemDialog = params.elemDialog;
13   var elemVm = params.elemVm;
14
15   var data = function data() {
16     return {
17       loginUrl: "/api/v1/login",
18       nickname: "",
19       rawPassword: "",
20       message: "",
21     };
22   };
23
24   var props = {
25     rpath: String,
26   };
27
28   var methods = {
29     doLogin: function doLogin() {
30       statusBar.loading();
31       newslash.login(this.nickname, this.rawPassword).then(
32         (resp) => {
33           if (!resp.error && resp.nickname == this.nickname) {
34             this.message = "";
35             if (this.rpath.charAt(0) == '/') {
36               window.location.href = this.rpath;
37             } else {
38               window.location.href = '/';
39             }
40           }
41           statusBar.hide();
42         },
43         (resp) => {
44           if (resp.reason && resp.reason == "auth_failed") {
45             this.message = "auth_error";
46             statusBar.error();
47           }
48         });
49     },
50     doCancel: function doCancel() {
51       $("#login-modal").toggleClass("open");
52     }
53   };
54   
55   Vue.component('login-dialog', {
56     template: elemDialog,
57     props: props,
58     data: data,
59     methods: methods,
60   });
61
62   vmLogin = new Vue({el: elemVm,});
63 };