public async Task<IActionResult> TryClaimSession([FromBody] ZoneServerTryClaimSessionRequest request) { //TODO: Renable auth for session claiming ProjectVersionStage.AssertAlpha(); if(!this.ModelState.IsValid) return BadRequest(); //TODO: Send JSON back too. //TODO: We should validate a lot things. One, that the character has a session on this zoneserver. //We should also validate that the account owns the character. We need a new auth process for entering users. //We have to do this validation, somehow. Or malicious players could spoof this. ProjectVersionStage.AssertAlpha(); //TODO: Verify that the zone id is correct. Right now we aren't providing it and the query doesn't enforce it. //We don't validate characterid/accountid association manually. It is implemented in the tryclaim SQL instead. //It additionally also checks the zone relation for the session so it will fail if it's invalid for the provided zone. //Therefore we don't need to make 3/4 database calls/queries to claim a session. Just one stored procedure call. //This is preferable. A result code will be used to indicate the exact error in the future. For now it just fails if it fails. bool sessionClaimed = await CharacterSessionRepository.TryClaimUnclaimedSession(request.PlayerAccountId, request.CharacterId); return Ok(new ZoneServerTryClaimSessionResponse(sessionClaimed ? ZoneServerTryClaimSessionResponseCode.Success : ZoneServerTryClaimSessionResponseCode.GeneralServerError)); //TODO }
/// <inheritdoc /> public async Task <ZoneServerTryClaimSessionResponse> TryClaimSession(ZoneServerTryClaimSessionRequest request) { return(await(await GetService().ConfigureAwaitFalse()).TryClaimSession(request).ConfigureAwaitFalse()); }