KF-MMO-Server/Account/_login.ts

34 lines
1.3 KiB
TypeScript

import { userData } from "../Classes/userData.js";
import { characters } from "../Characters/characters.js";
import { userCheckResult, users } from "./users.js";
import { db } from "../index.js"
import { Socket } from "socket.io";
import { loginResponse, loginResult } from "../Classes/Outgoing/accountResponses.js";
import { Endpoints } from "../endpoints.js";
export async function login(socket : Socket, data){
let buff = Buffer.from(data, 'base64');
let json : userData = JSON.parse(buff.toString('utf-8'));
if (!json.login || !json.password){
console.log("login or password is missing")
return
}
const userCheck = await users.readUser(db, json.login, json.password);
if(userCheck.result == userCheckResult.OK){
const user = userCheck.userData;
console.log(`User ${user.login} logged in`);
const character = await characters.readCharacter(db, user.id);
const result = new loginResponse(loginResult.success, user, character)
socket.user = user
socket.character = character
socket.emit(Endpoints.Login, JSON.stringify(result));
}
else{
console.log(`User ${json.login} did not log in`);
const result = new loginResponse(loginResult.fail, null, null)
socket.emit(Endpoints.Login, JSON.stringify(result));
}
}