130 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			130 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/*
 | 
						||
 * Copyright (C) 2022. Gardel <sunxinao@hotmail.com> and contributors
 | 
						||
 *
 | 
						||
 * This program is free software: you can redistribute it and/or modify
 | 
						||
 * it under the terms of the GNU Affero General Public License as published by
 | 
						||
 * the Free Software Foundation, either version 3 of the License, or
 | 
						||
 * (at your option) any later version.
 | 
						||
 *
 | 
						||
 * This program is distributed in the hope that it will be useful,
 | 
						||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
						||
 * GNU Affero General Public License for more details.
 | 
						||
 *
 | 
						||
 * You should have received a copy of the GNU Affero General Public License
 | 
						||
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 | 
						||
 */
 | 
						||
 | 
						||
const MDCSnackbar = mdc.snackbar.MDCSnackbar;
 | 
						||
const MDCTextField = mdc.textField.MDCTextField;
 | 
						||
const MDCRipple = mdc.ripple.MDCRipple;
 | 
						||
 | 
						||
const snackbar = new MDCSnackbar(document.querySelector(".mdc-snackbar"));
 | 
						||
const username = new MDCTextField(document.querySelector(".username"));
 | 
						||
const password = new MDCTextField(document.querySelector(".password"));
 | 
						||
const profileName = new MDCTextField(document.querySelector(".profileName"));
 | 
						||
 | 
						||
new MDCRipple(document.querySelector(".next"));
 | 
						||
 | 
						||
snackbar.close();
 | 
						||
 | 
						||
var login = false;
 | 
						||
 | 
						||
$(".login").click(function (btn) {
 | 
						||
    login = true;
 | 
						||
    $(".profileName").hide();
 | 
						||
    $("#profileName-input").removeAttr("required");
 | 
						||
    $(".next").children(".mdc-button__label").text("登录");
 | 
						||
    $(this).hide();
 | 
						||
});
 | 
						||
 | 
						||
$("#reg-form").submit(function (e) {
 | 
						||
    if (!login) {
 | 
						||
        $.ajax({
 | 
						||
            url: "/authserver/register",
 | 
						||
            type: "POST",
 | 
						||
            dataType: "JSON",
 | 
						||
            contentType: "application/json",
 | 
						||
            data: JSON.stringify({
 | 
						||
                username: username.value,
 | 
						||
                password: password.value,
 | 
						||
                profileName: profileName.value
 | 
						||
            }),
 | 
						||
            success: function (data) {
 | 
						||
                if (!data.id) {
 | 
						||
                    if (data.errorMessage) snackbar.labelText = data.errorMessage;
 | 
						||
                    snackbar.open();
 | 
						||
                } else {
 | 
						||
                    login = true;
 | 
						||
                    $(".profileName").hide();
 | 
						||
                    $(".login").hide();
 | 
						||
                    $(".next").children(".mdc-button__label").text("登录");
 | 
						||
                    snackbar.timeoutMs = 10000;
 | 
						||
                    snackbar.labelText = "注册成功,uid:" + data.id;
 | 
						||
                    snackbar.open();
 | 
						||
                    localStorage.uuid = data.id;
 | 
						||
                }
 | 
						||
            },
 | 
						||
            error: function (e) {
 | 
						||
                let response = JSON.parse(e.responseText);
 | 
						||
                if (response.errorMessage === "profileName exist") {
 | 
						||
                    snackbar.labelText = "注册失败: 角色名已存在";
 | 
						||
                } else if (response.errorMessage === "profileName duplicate") {
 | 
						||
                    snackbar.labelText = "注册失败: 角色名与正版用户冲突";
 | 
						||
                } else {
 | 
						||
                    snackbar.labelText = "注册失败: " + response.errorMessage;
 | 
						||
                }
 | 
						||
                snackbar.open();
 | 
						||
            }
 | 
						||
        });
 | 
						||
    } else {
 | 
						||
        $.ajax({
 | 
						||
            url: "/authserver/authenticate",
 | 
						||
            type: "POST",
 | 
						||
            dataType: "JSON",
 | 
						||
            contentType: "application/json",
 | 
						||
            data: JSON.stringify({
 | 
						||
                username: username.value,
 | 
						||
                password: password.value
 | 
						||
            }),
 | 
						||
            success: function (data) {
 | 
						||
                if (!data.accessToken) {
 | 
						||
                    snackbar.labelText = "登录失败:";
 | 
						||
                    if (data.errorMessage) snackbar.labelText += data.errorMessage;
 | 
						||
                    snackbar.open();
 | 
						||
                } else {
 | 
						||
                    snackbar.timeoutMs = 5000;
 | 
						||
                    snackbar.labelText = "登录成功,accessToken:" + data.accessToken;
 | 
						||
                    snackbar.open();
 | 
						||
                    localStorage.accessToken = data.accessToken;
 | 
						||
                    localStorage.loginTime = new Date().getTime();
 | 
						||
                    localStorage.profileName = data.selectedProfile.name;
 | 
						||
                    if (data.selectedProfile) {
 | 
						||
                        localStorage.profileName = data.selectedProfile.name;
 | 
						||
                        localStorage.uuid = data.selectedProfile.id;
 | 
						||
                    }
 | 
						||
                    // localStorage.username = username.value;
 | 
						||
                    // localStorage.password = password.value;
 | 
						||
                    setTimeout(function () {
 | 
						||
                        window.location = "user.html";
 | 
						||
                    }, 3000);
 | 
						||
                }
 | 
						||
            },
 | 
						||
            error: function (e) {
 | 
						||
                let response = JSON.parse(e.responseText);
 | 
						||
                snackbar.labelText = "登录失败: " + response.errorMessage;
 | 
						||
                snackbar.open();
 | 
						||
            }
 | 
						||
        });
 | 
						||
    }
 | 
						||
 | 
						||
    e.preventDefault();
 | 
						||
});
 | 
						||
 | 
						||
$(document).ready(function () {
 | 
						||
    if (!localStorage.accessToken && localStorage.loginTime !== undefined &&
 | 
						||
        (new Date().getTime() - localStorage.loginTime) < 30 * 86400 * 1000) {
 | 
						||
        window.location = "user.html";
 | 
						||
    }
 | 
						||
});
 |