You've already forked KF-MMO-Server
further refactor
This commit is contained in:
@@ -1,21 +0,0 @@
|
||||
import { loginResponse } from "../Classes/loginResponse.js";
|
||||
import { playerData } from "../Classes/playerData.js";
|
||||
import { userData } from "../Classes/userData.js";
|
||||
|
||||
export function emitLogin(socket, user : userData | null, player:playerData, registered:boolean = false){
|
||||
if(user != null){
|
||||
socket.emit("account/login", JSON.stringify(new loginResponse(true, user, player)));
|
||||
socket.user = user
|
||||
socket.player = player
|
||||
if(registered){
|
||||
console.log(`User ${(user as userData).login} registerd and logged in`);
|
||||
}
|
||||
else{
|
||||
console.log(`User ${(user as userData).login} logged in`);
|
||||
}
|
||||
}
|
||||
else{
|
||||
socket.emit("account/login", JSON.stringify(new loginResponse(false, null, null)));
|
||||
console.log("Login Failed");
|
||||
}
|
||||
}
|
||||
@@ -1,21 +1,33 @@
|
||||
import { userData } from "../Classes/userData.js";
|
||||
import { players } from "../Player/players.js";
|
||||
import { emitLogin } from "./_emitLogin.js";
|
||||
import { characters } from "../Characters/characters.js";
|
||||
import { users } from "./users.js";
|
||||
import { db } from "../index.js"
|
||||
import { Socket } from "socket.io";
|
||||
import { loginResponse } from "../Classes/Outgoing/accountResponses.js";
|
||||
import { Endpoints } from "../endpoints.js";
|
||||
|
||||
export function login(socket, data){
|
||||
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) return
|
||||
let json : userData = JSON.parse(buff.toString('utf-8'));
|
||||
if (!json.login || !json.password){
|
||||
console.log("login or password is missing")
|
||||
return
|
||||
}
|
||||
|
||||
let result = users.readUser(json.login, json.password);
|
||||
let player = null
|
||||
if(result != null){
|
||||
player = players.readPlayer(result.id)
|
||||
if(player == null){
|
||||
player = players.createPlayer(result.id)
|
||||
}
|
||||
}
|
||||
const user = await users.readUser(db, json.login, json.password);
|
||||
|
||||
emitLogin(socket, result, player);
|
||||
if(user){
|
||||
console.log(`User ${user.login} logged in`);
|
||||
const character = await characters.readCharacter(db, user.id);
|
||||
const result = new loginResponse(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(null, null)
|
||||
socket.emit(Endpoints.Login, JSON.stringify(result));
|
||||
}
|
||||
}
|
||||
@@ -1,18 +1,32 @@
|
||||
import { userData } from "../Classes/userData.js";
|
||||
import { players } from "../Player/players.js";
|
||||
import { emitLogin } from "./_emitLogin.js";
|
||||
import { users } from "./users.js";
|
||||
import { db } from "../index.js"
|
||||
import { Socket } from "socket.io";
|
||||
import { loginResponse } from "../Classes/Outgoing/accountResponses.js";
|
||||
import { Endpoints } from "../endpoints.js";
|
||||
import { characters } from "../Characters/characters.js";
|
||||
|
||||
export function register(socket, data){
|
||||
export async function register(socket : Socket, data){
|
||||
let buff = Buffer.from(data, 'base64');
|
||||
let json : userData = JSON.parse(buff.toString('utf-8'));
|
||||
if (!json.login || !json.password) return
|
||||
let json : userData = JSON.parse(buff.toString('utf-8'));
|
||||
if (!json.login || !json.password){
|
||||
console.log("login or password is missing")
|
||||
return
|
||||
}
|
||||
|
||||
let result = users.createUser(json.login, json.password);
|
||||
let player = null
|
||||
if(result != null){
|
||||
player = players.createPlayer(result.id)
|
||||
}
|
||||
const user = await users.createUser(db, json.login, json.password);
|
||||
|
||||
emitLogin(socket, result, player);
|
||||
if(user){
|
||||
console.log(`User ${user.login} registered`);
|
||||
const character = await characters.createCharacter(db, user.id);
|
||||
const result = new loginResponse(user, character)
|
||||
socket.user = user
|
||||
socket.character = character
|
||||
socket.emit(Endpoints.Register, JSON.stringify(result))
|
||||
}
|
||||
else{
|
||||
console.log(`User failed to register`);
|
||||
const result = new loginResponse(null, null)
|
||||
socket.emit(Endpoints.Register, JSON.stringify(result))
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,13 @@
|
||||
import { register } from "./_register.js";
|
||||
import { login } from "./_login.js";
|
||||
import { Endpoints } from "../endpoints.js";
|
||||
|
||||
export function registerAccountCallbacks(socket){
|
||||
socket.on('account/register', (data) => {
|
||||
socket.on(Endpoints.Register, (data) => {
|
||||
register(socket, data)
|
||||
});
|
||||
|
||||
socket.on('account/login', (data) => {
|
||||
socket.on(Endpoints.Login, (data) => {
|
||||
login(socket, data)
|
||||
});
|
||||
}
|
||||
@@ -1,56 +1,25 @@
|
||||
import { game } from "../game.js";
|
||||
import { userData } from "../Classes/userData.js";
|
||||
import { DatabaseController } from "../Database/dbcontroller.js";
|
||||
|
||||
export class users{
|
||||
static createUser(login, password){
|
||||
if (game.accountsDB.find(u=>u.login == login) != null){
|
||||
console.log(`User ${login} alread exists`);
|
||||
return null;
|
||||
}
|
||||
static async createUser(db: DatabaseController, login : string, password : string){
|
||||
await db.run('INSERT INTO users (login, password) VALUES (?, ?)', [login, password]);
|
||||
return await this.readUser(db, login, password)
|
||||
}
|
||||
|
||||
var user = new userData(game.accountsDB.length, login, password);
|
||||
game.accountsDB.push(user);
|
||||
static async readUser(db: DatabaseController, login : string, password : string): Promise<userData>{
|
||||
let user = await db.select(`SELECT * FROM users WHERE login = ? AND password = ?`, [login, password])
|
||||
if (user.length > 0){
|
||||
let row = user[0]
|
||||
return new userData({...row})
|
||||
}
|
||||
else{
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
static async readUserID(db: DatabaseController, id : number){
|
||||
let user = await db.select(`SELECT * FROM users WHERE id = ?`, [id])
|
||||
return user;
|
||||
}
|
||||
|
||||
static readUser(login, password){
|
||||
let user = game.accountsDB.find(u=>u.login == login && u.password == password)
|
||||
if(user != null){
|
||||
return user;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
static readUserID(id : number){
|
||||
let user = game.accountsDB.filter(u=>u.id == id)[0];
|
||||
return user;
|
||||
}
|
||||
|
||||
static updateUser(userNew : userData){
|
||||
let user = this.readUserID(userNew.id);
|
||||
let sum = Math.floor(Math.random() * 99999);
|
||||
while(sum == userNew.checksum){
|
||||
sum = Math.floor(Math.random() * 99999);
|
||||
}
|
||||
userNew.checksum = sum;
|
||||
game.accountsDB[game.accountsDB.indexOf(user)] = userNew;
|
||||
}
|
||||
|
||||
static saveUsers(fs){
|
||||
game.accountsDB.forEach(user => {user.save(fs)});
|
||||
}
|
||||
|
||||
static loadUsers(fs){
|
||||
fs.mkdirSync(`Database/Users/`, { recursive: true })
|
||||
fs.readdir(`Database/Users/`, (err, files) => {
|
||||
files.forEach(file => {
|
||||
fs.readFile(`Database/Users/${file}`, (err, data) => {
|
||||
if (err) throw err;
|
||||
let user : userData = Object.assign(new userData(-1,"",""), JSON.parse(data));
|
||||
game.accountsDB.push(user);
|
||||
console.log(`Loaded ${user.login}`);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user