forked from noxious/server
Authentication works again
This commit is contained in:
parent
1b87f1dd91
commit
bf64a6df70
@ -1,5 +1,7 @@
|
||||
import { Socket } from 'socket.io'
|
||||
import { Character, User, ZoneEventTile, ZoneEventTileTeleport } from '@prisma/client'
|
||||
import { Character } from '#entities/character'
|
||||
import { ZoneEventTile } from '#entities/zoneEventTile'
|
||||
import { ZoneEventTileTeleport } from '#entities/zoneEventTileTeleport'
|
||||
|
||||
export type TSocket = Socket & {
|
||||
userId?: number
|
||||
|
@ -1,6 +1,7 @@
|
||||
import { Character, Zone } from '@prisma/client'
|
||||
import zoneEventTileRepository from '#repositories/zoneEventTileRepository'
|
||||
import ZoneCharacter from './zoneCharacter'
|
||||
import { Character } from '#entities/character'
|
||||
import { Zone } from '#entities/zone'
|
||||
|
||||
class LoadedZone {
|
||||
private readonly zone: Zone
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { Character } from '@prisma/client'
|
||||
import { CharacterService } from '#services/characterService'
|
||||
import { Character } from '#entities/character'
|
||||
|
||||
class ZoneCharacter {
|
||||
public readonly character: Character
|
||||
@ -12,7 +12,7 @@ class ZoneCharacter {
|
||||
|
||||
public async savePosition() {
|
||||
const characterService = new CharacterService()
|
||||
await characterService.updateCharacterPosition(this.character.id, this.character.positionX, this.character.positionY, this.character.rotation, this.character.zoneId)
|
||||
await characterService.updateCharacterPosition(this.character.id, this.character.positionX, this.character.positionY, this.character.rotation, this.character.zone.id)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -25,9 +25,8 @@ export class CharacterService {
|
||||
const character = new Character()
|
||||
character.name = name
|
||||
character.user = user
|
||||
await Database.save(character)
|
||||
|
||||
return character
|
||||
return await character.save()
|
||||
}
|
||||
|
||||
async updateHair(characterId: number, characterHairId: number | null) {
|
||||
@ -36,15 +35,13 @@ export class CharacterService {
|
||||
|
||||
if (characterHairId === null) {
|
||||
character.characterHair = undefined
|
||||
await Database.save(character)
|
||||
return character
|
||||
return await character.save()
|
||||
}
|
||||
|
||||
const characterHair = await CharacterHairRepository.getById(characterHairId)
|
||||
character.characterHair = characterHair ?? undefined
|
||||
|
||||
await Database.save(character)
|
||||
return character
|
||||
return await character.save()
|
||||
}
|
||||
|
||||
async deleteByUserIdAndId(userId: number, characterId: number): Promise<Character | null> {
|
||||
@ -52,8 +49,7 @@ export class CharacterService {
|
||||
const character = await CharacterRepository.getByUserAndId(userId, characterId)
|
||||
if (!character) return null
|
||||
|
||||
await Database.delete(character)
|
||||
return character
|
||||
return await character.delete()
|
||||
} catch (error: any) {
|
||||
// Handle error
|
||||
appLogger.error(`Failed to delete character by user ID and character ID: ${error instanceof Error ? error.message : String(error)}`)
|
||||
@ -70,7 +66,8 @@ export class CharacterService {
|
||||
character.rotation = rotation
|
||||
character.zone = await ZoneRepository.getById(zoneId) as Zone
|
||||
|
||||
await Database.save(character)
|
||||
await character.save()
|
||||
|
||||
return character
|
||||
}
|
||||
|
||||
|
@ -1,19 +1,28 @@
|
||||
import prisma from '#application/prisma'
|
||||
import { gameLogger } from '#application/logger'
|
||||
import { Server } from 'socket.io'
|
||||
import { TSocket } from '#application/types'
|
||||
import ChatRepository from '#repositories/chatRepository'
|
||||
import { Chat } from '#entities/chat'
|
||||
import ZoneRepository from '#repositories/zoneRepository'
|
||||
import CharacterRepository from '#repositories/characterRepository'
|
||||
|
||||
class ChatService {
|
||||
async sendZoneMessage(io: Server, socket: TSocket, message: string, characterId: number, zoneId: number): Promise<boolean> {
|
||||
try {
|
||||
const newChat = await prisma.chat.create({
|
||||
data: {
|
||||
characterId,
|
||||
zoneId,
|
||||
message
|
||||
}
|
||||
})
|
||||
|
||||
const character = await CharacterRepository.getById(characterId)
|
||||
if (!character) return false
|
||||
|
||||
const zone = await ZoneRepository.getById(zoneId)
|
||||
if (!zone) return false
|
||||
|
||||
const newChat = new Chat()
|
||||
|
||||
newChat.character = character
|
||||
newChat.zone = zone
|
||||
newChat.message = message
|
||||
|
||||
await newChat.save()
|
||||
|
||||
const chat = await ChatRepository.getById(newChat.id)
|
||||
if (!chat) return false
|
||||
|
@ -1,4 +1,3 @@
|
||||
import prisma from '#application/prisma'
|
||||
import passwordResetTokenRepository from '#repositories/passwordResetTokenRepository'
|
||||
import { appLogger } from '#application/logger'
|
||||
|
||||
@ -14,11 +13,7 @@ class PasswordResetTokenService {
|
||||
return false
|
||||
}
|
||||
|
||||
await prisma.passwordResetToken.delete({
|
||||
where: {
|
||||
token
|
||||
}
|
||||
})
|
||||
await tokenData.delete()
|
||||
|
||||
return true
|
||||
} catch (error: any) {
|
||||
|
@ -51,7 +51,7 @@ class UserService {
|
||||
newUser.username = username
|
||||
newUser.email = email
|
||||
newUser.password = hashedPassword
|
||||
await Database.save(newUser)
|
||||
await newUser.save()
|
||||
|
||||
return newUser
|
||||
} catch (error: any) {
|
||||
@ -76,14 +76,14 @@ class UserService {
|
||||
if (!isTokenExpired) return false
|
||||
|
||||
// Delete existing token using MikroORM
|
||||
await Database.delete(latestToken)
|
||||
await latestToken.delete()
|
||||
}
|
||||
|
||||
// Create new token using MikroORM
|
||||
const passwordResetToken = new PasswordResetToken()
|
||||
passwordResetToken.user = user
|
||||
passwordResetToken.token = token
|
||||
await Database.save(passwordResetToken)
|
||||
await passwordResetToken.save()
|
||||
|
||||
const transporter = NodeMailer.createTransport({
|
||||
host: config.SMTP_HOST,
|
||||
|
@ -1,15 +1,14 @@
|
||||
import { ExtendedCharacter, TSocket } from '#application/types'
|
||||
import prisma from '#application/prisma'
|
||||
import { ZoneEventTileTeleport } from '@prisma/client'
|
||||
import { Server } from 'socket.io'
|
||||
import ZoneManager from '#managers/zoneManager'
|
||||
import { gameLogger } from '#application/logger'
|
||||
import { ZoneEventTileTeleport } from '#entities/zoneEventTileTeleport'
|
||||
|
||||
export class ZoneEventTileService {
|
||||
public async handleTeleport(io: Server, socket: TSocket, character: ExtendedCharacter, teleport: ZoneEventTileTeleport): Promise<void> {
|
||||
if (teleport.toZoneId === character.zoneId) return
|
||||
if (teleport.toZone.id === character.zone.id) return
|
||||
|
||||
const loadedZone = ZoneManager.getZoneById(teleport.toZoneId)
|
||||
const loadedZone = ZoneManager.getZoneById(teleport.toZone.id)
|
||||
if (!loadedZone) {
|
||||
gameLogger.error('zone:character:join error', 'Loaded zone not found')
|
||||
return
|
||||
@ -17,27 +16,18 @@ export class ZoneEventTileService {
|
||||
|
||||
const zone = loadedZone.getZone()
|
||||
|
||||
const oldZoneId = character.zoneId
|
||||
const newZoneId = teleport.toZoneId
|
||||
|
||||
// Update character in database
|
||||
await prisma.character.update({
|
||||
where: { id: character.id },
|
||||
data: {
|
||||
zoneId: newZoneId,
|
||||
positionX: teleport.toPositionX,
|
||||
positionY: teleport.toPositionY,
|
||||
rotation: teleport.toRotation
|
||||
}
|
||||
})
|
||||
const oldZoneId = character.zone.id
|
||||
const newZoneId = teleport.toZone.id
|
||||
|
||||
// Update local character object
|
||||
character.zoneId = newZoneId
|
||||
character.zone = teleport.toZone
|
||||
character.rotation = teleport.toRotation
|
||||
character.positionX = teleport.toPositionX
|
||||
character.positionY = teleport.toPositionY
|
||||
character.isMoving = false
|
||||
|
||||
await character.save()
|
||||
|
||||
// Remove and add character to new zone
|
||||
await loadedZone.removeCharacter(character.id)
|
||||
loadedZone.addCharacter(character)
|
||||
|
@ -1,6 +1,3 @@
|
||||
import prisma from '#application/prisma'
|
||||
import { gameLogger } from '#application/logger'
|
||||
|
||||
class ZoneService {}
|
||||
|
||||
export default ZoneService
|
||||
|
Loading…
x
Reference in New Issue
Block a user