87 lines
2.5 KiB
TypeScript
87 lines
2.5 KiB
TypeScript
import {UserData} from "../index";
|
|
|
|
(window as any).$ = require("jquery");
|
|
{
|
|
const request = require('request');
|
|
const util = require('util');
|
|
const request_post = util.promisify(request.post);
|
|
|
|
|
|
const api_url = "https://web.teaspeak.de/";
|
|
|
|
|
|
const btn_login = $("#btn_login");
|
|
btn_login.on('click', () => {
|
|
btn_login
|
|
.prop("disabled", true)
|
|
.empty()
|
|
.append($(document.createElement("i")).addClass("fa fa-circle-o-notch fa-spin"));
|
|
submit_login($("#user").val() as string, $("#pass").val() as string).then(data => {
|
|
$("#login").hide(500);
|
|
$("#success").show(500);
|
|
|
|
const ipc = require("electron").ipcRenderer;
|
|
ipc.send('teaforo-callback', data);
|
|
}).catch(error => {
|
|
console.log("Failed: " + error);
|
|
loginFailed(error);
|
|
});
|
|
});
|
|
|
|
async function submit_login(user: string, pass: string) : Promise<UserData> {
|
|
const {error, response, body} = await request_post(api_url + "auth.php", {
|
|
timeout: 5000,
|
|
form: {
|
|
action: "login",
|
|
user: user,
|
|
pass: pass
|
|
}
|
|
|
|
});
|
|
console.log("Error: %o", error);
|
|
console.log("response: %o", response);
|
|
console.log("body: %o", body);
|
|
|
|
const data = JSON.parse(body);
|
|
if(!data["success"]) throw data["msg"];
|
|
|
|
let user_data: UserData = {} as any;
|
|
user_data.session_id = data["sessionId"];
|
|
user_data.username = data["user_name"];
|
|
user_data.application_data = data["user_data"];
|
|
user_data.application_data_sign = data["user_sign"];
|
|
return user_data;
|
|
}
|
|
|
|
function loginFailed(err: string = "") {
|
|
btn_login
|
|
.prop("disabled", false)
|
|
.empty()
|
|
.append($(document.createElement("a")).text("Login"));
|
|
|
|
let errTag = $(".box .error");
|
|
if(err !== "") {
|
|
errTag.text(err).show(500);
|
|
} else errTag.hide(500);
|
|
}
|
|
|
|
//<i class="fa fa-circle-o-notch fa-spin" id="login-loader"></i>
|
|
|
|
$("#user").on('keydown', event => {
|
|
if(event.key == "Enter") $("#pass").focus();
|
|
});
|
|
|
|
$("#pass").on('keydown', event => {
|
|
if(event.key == "Enter") $("#btn_login").trigger("click");
|
|
});
|
|
|
|
//Patch for the external URL
|
|
$('body').on('click', 'a', (event) => {
|
|
event.preventDefault();
|
|
let link = (<any>event.target).href;
|
|
require("electron").shell.openExternal(link);
|
|
});
|
|
}
|
|
|
|
|