You've already forked KF-MMO-Server
improved adherence to types
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
import { userData } from "../Classes/userData.js";
|
||||
import { characters } from "../Characters/characters.js";
|
||||
import { users } from "./users.js";
|
||||
import { userCheckResult, users } from "./users.js";
|
||||
import { db } from "../index.js"
|
||||
import { Socket } from "socket.io";
|
||||
import { loginResponse } from "../Classes/Outgoing/accountResponses.js";
|
||||
import { loginResponse, loginResult } from "../Classes/Outgoing/accountResponses.js";
|
||||
import { Endpoints } from "../endpoints.js";
|
||||
|
||||
export async function login(socket : Socket, data){
|
||||
@@ -14,12 +14,13 @@ export async function login(socket : Socket, data){
|
||||
return
|
||||
}
|
||||
|
||||
const user = await users.readUser(db, json.login, json.password);
|
||||
const userCheck = await users.readUser(db, json.login, json.password);
|
||||
|
||||
if(user){
|
||||
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(user, character)
|
||||
const result = new loginResponse(loginResult.success, user, character)
|
||||
|
||||
socket.user = user
|
||||
socket.character = character
|
||||
@@ -27,7 +28,7 @@ export async function login(socket : Socket, data){
|
||||
}
|
||||
else{
|
||||
console.log(`User ${json.login} did not log in`);
|
||||
const result = new loginResponse(null, null)
|
||||
const result = new loginResponse(loginResult.fail, null, null)
|
||||
socket.emit(Endpoints.Login, JSON.stringify(result));
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
import { userData } from "../Classes/userData.js";
|
||||
import { users } from "./users.js";
|
||||
import { userCheckResult, users } from "./users.js";
|
||||
import { db } from "../index.js"
|
||||
import { Socket } from "socket.io";
|
||||
import { loginResponse } from "../Classes/Outgoing/accountResponses.js";
|
||||
import { loginResponse, loginResult } from "../Classes/Outgoing/accountResponses.js";
|
||||
import { Endpoints } from "../endpoints.js";
|
||||
import { characters } from "../Characters/characters.js";
|
||||
|
||||
@@ -14,19 +14,26 @@ export async function register(socket : Socket, data){
|
||||
return
|
||||
}
|
||||
|
||||
const user = await users.createUser(db, json.login, json.password);
|
||||
const checkExisting = await users.readUser(db, json.login, null)
|
||||
if(checkExisting.result != userCheckResult.NotExist){
|
||||
const result = new loginResponse(loginResult.accountExists, null, null)
|
||||
socket.emit(Endpoints.Register, JSON.stringify(result))
|
||||
return
|
||||
}
|
||||
|
||||
const user = (await users.createUser(db, json.login, json.password)).userData;
|
||||
|
||||
if(user){
|
||||
console.log(`User ${user.login} registered`);
|
||||
const character = await characters.createCharacter(db, user.id);
|
||||
const result = new loginResponse(user, character)
|
||||
const result = new loginResponse(loginResult.success, 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)
|
||||
const result = new loginResponse(loginResult.fail, null, null)
|
||||
socket.emit(Endpoints.Register, JSON.stringify(result))
|
||||
}
|
||||
}
|
||||
@@ -1,25 +1,45 @@
|
||||
import { userData } from "../Classes/userData.js";
|
||||
import { DatabaseController } from "../Database/dbcontroller.js";
|
||||
import { DatabaseController, dbUser } from "../Database/dbcontroller.js";
|
||||
|
||||
export class userCheckResponse{
|
||||
result : userCheckResult
|
||||
userData : userData
|
||||
|
||||
constructor(result : userCheckResult, userData : userData){
|
||||
this.result = result;
|
||||
this.userData = userData;
|
||||
}
|
||||
}
|
||||
|
||||
export enum userCheckResult{
|
||||
OK,
|
||||
IncorrectPassword,
|
||||
NotExist
|
||||
}
|
||||
|
||||
export class users{
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
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])
|
||||
static async readUser(db: DatabaseController, login : string, password : string): Promise<userCheckResponse>{
|
||||
let user = await db.select<dbUser>(`SELECT * FROM users WHERE login = ? LIMIT 1`, [login])
|
||||
if (user.length > 0){
|
||||
let row = user[0]
|
||||
return new userData({...row})
|
||||
if (row.password != password){
|
||||
return new userCheckResponse(userCheckResult.IncorrectPassword, null)
|
||||
}
|
||||
return new userCheckResponse(userCheckResult.OK, new userData({...row}))
|
||||
}
|
||||
else{
|
||||
return null
|
||||
return new userCheckResponse(userCheckResult.NotExist, null)
|
||||
}
|
||||
}
|
||||
|
||||
static async readUserID(db: DatabaseController, id : number){
|
||||
let user = await db.select(`SELECT * FROM users WHERE id = ?`, [id])
|
||||
let user = await db.select<dbUser>(`SELECT * FROM users WHERE id = ?`, [id])
|
||||
return user;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user