You've already forked KF-MMO-Server
							
							Init
This commit is contained in:
		
							
								
								
									
										34
									
								
								Account/accountSocket.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Account/accountSocket.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | ||||
| import { game } from "../game"; | ||||
| import { publicUserData, userData } from "./userData"; | ||||
| import { users } from "./users"; | ||||
|  | ||||
| export function registerAccountCallbacks(socket){ | ||||
|     function emitLogin(result : userData, registered:boolean = false){ | ||||
|         socket.emit("account/login", JSON.stringify(new publicUserData(result, socket.id))); | ||||
|         console.log(result) | ||||
|         if(result != null){ | ||||
|             if(registered){ | ||||
|                 console.log(`User ${(result as userData).Login} registerd and logged in`); | ||||
|             } | ||||
|             else{ | ||||
|                 console.log(`User ${(result as userData).Login} logged in`); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|      | ||||
|     socket.on('account/register', (data) => { | ||||
|         let buff = Buffer.from(data, 'base64'); | ||||
|         let json = JSON.parse(buff.toString('utf-8')); | ||||
|         let result = users.createUser(json.Login, json.Password); | ||||
|  | ||||
|         emitLogin(result, true); | ||||
|     }); | ||||
|  | ||||
|     socket.on('account/login', (data) => { | ||||
|         let buff = Buffer.from(data, 'base64'); | ||||
|         let json = JSON.parse(buff.toString('utf-8')); | ||||
|         let result = users.readUser(json.Login, json.Password); | ||||
|  | ||||
|         emitLogin(result); | ||||
|     }); | ||||
| } | ||||
							
								
								
									
										28
									
								
								Account/userData.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								Account/userData.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| export class userData{ | ||||
|     Id: number; | ||||
|     Checksum: number; | ||||
|     Login: string; | ||||
|     Password: string; | ||||
|     Characters: number[] = []; | ||||
|  | ||||
|     constructor(id:number, login:string, password:string){ | ||||
|         this.Id = id; | ||||
|         this.Login = login; | ||||
|         this.Password = password; | ||||
|     } | ||||
| } | ||||
|  | ||||
| export class publicUserData{ | ||||
|     Id: number; | ||||
|     Login: string; | ||||
|     SocketId: string; | ||||
|  | ||||
|     constructor(user:userData, socket: string){ | ||||
|         if(user == null){ | ||||
|             return null; | ||||
|         } | ||||
|         this.Id = user.Id; | ||||
|         this.Login = user.Login; | ||||
|         this.SocketId = socket; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										59
									
								
								Account/users.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								Account/users.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,59 @@ | ||||
| import { game } from "../game"; | ||||
| import { userData } from "./userData"; | ||||
| const fs = require('fs'); | ||||
|  | ||||
| export class users{ | ||||
|     static createUser(login, password){ | ||||
|         if(game.usersDB.filter(u=>u.Login == login)[0] != undefined){ | ||||
|             console.log(`User ${login} alread exists`); | ||||
|             return null; | ||||
|         } | ||||
|  | ||||
|         var user = new userData(game.usersDB.length, login, password); | ||||
|         game.usersDB.push(user); | ||||
|         return user; | ||||
|     } | ||||
|      | ||||
|     static readUser(login, password){ | ||||
|         let user = game.usersDB.filter(u=>u.Login == login && u.Password == password)[0]; | ||||
|         if(user != undefined){ | ||||
|             return user; | ||||
|         } | ||||
|         return null; | ||||
|     } | ||||
|  | ||||
|     static readUserID(id : number){ | ||||
|         let user = game.usersDB.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.usersDB[game.usersDB.indexOf(user)] = userNew; | ||||
|     } | ||||
|  | ||||
|     static saveUsers(){ | ||||
|         game.usersDB.forEach(user => { | ||||
|             let data = JSON.stringify(user, null, 2); | ||||
|             fs.writeFileSync(`Database/Users/${user.Id}_${user.Login}.json`, data); | ||||
|         }); | ||||
|     } | ||||
|      | ||||
|     static loadUsers(){ | ||||
|         fs.readdir(`Database/Users/`, (err, files) => { | ||||
|             files.forEach(file => { | ||||
|                 fs.readFile(`Database/Users/${file}`, (err, data) => { | ||||
|                     if (err) throw err; | ||||
|                     let user = JSON.parse(data); | ||||
|                     game.usersDB.push(user); | ||||
|                     console.log(`Loaded ${user.Login}`); | ||||
|                 }); | ||||
|             }); | ||||
|         }); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user