Improved nickname validation code clarity
Improved accuracy of 2 responses: `client/game/profile/nickname/validate` `client/game/profile/nickname/change`
This commit is contained in:
@@ -68,7 +68,7 @@ public class CodeGenerator
|
||||
{
|
||||
if (code.GetLabel() == null)
|
||||
{
|
||||
return new List<Label>();
|
||||
return [];
|
||||
}
|
||||
|
||||
return [ (Label)code.GetLabel() ];
|
||||
|
||||
@@ -5,6 +5,7 @@ using SPTarkov.Server.Core.Models.Eft.Common;
|
||||
using SPTarkov.Server.Core.Models.Eft.Launcher;
|
||||
using SPTarkov.Server.Core.Models.Eft.Profile;
|
||||
using SPTarkov.Server.Core.Models.Enums;
|
||||
using SPTarkov.Server.Core.Models.Spt.Launcher;
|
||||
using SPTarkov.Server.Core.Utils;
|
||||
|
||||
namespace SPTarkov.Server.Core.Callbacks;
|
||||
@@ -72,20 +73,20 @@ public class ProfileCallbacks(
|
||||
/// Handle client/game/profile/nickname/change event
|
||||
/// Client allows player to adjust their profile name
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public string ChangeNickname(string url, ProfileChangeNicknameRequestData info, string sessionID)
|
||||
/// <returns>Client response as string</returns>
|
||||
public string ChangeNickname(string url, ProfileChangeNicknameRequestData info, string sessionId)
|
||||
{
|
||||
var output = _profileController.ChangeNickname(info, sessionID);
|
||||
var output = _profileController.ChangeNickname(info, sessionId);
|
||||
|
||||
return output switch
|
||||
{
|
||||
"taken" => _httpResponse.GetBody<object?>(null, BackendErrorCodes.NicknameNotUnique, "The nickname is already in use"),
|
||||
"tooshort" => _httpResponse.GetBody<object?>(null, BackendErrorCodes.NicknameNotValid, "The nickname is too short"),
|
||||
NicknameValidationResult.Taken => _httpResponse.GetBody<object?>(null, BackendErrorCodes.NicknameNotUnique, $"{BackendErrorCodes.NicknameNotUnique} - "),
|
||||
NicknameValidationResult.Short => _httpResponse.GetBody<object?>(null, BackendErrorCodes.NicknameNotValid, $"{BackendErrorCodes.NicknameNotValid} - "),
|
||||
_ => _httpResponse.GetBody<object>(
|
||||
new
|
||||
{
|
||||
status = 0,
|
||||
nicknamechangedate = _timeUtil.GetTimeStamp()
|
||||
NicknameChangeDate = _timeUtil.GetTimeStamp()
|
||||
}
|
||||
)
|
||||
};
|
||||
@@ -94,15 +95,13 @@ public class ProfileCallbacks(
|
||||
/// <summary>
|
||||
/// Handle client/game/profile/nickname/validate
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public string ValidateNickname(string url, ValidateNicknameRequestData info, string sessionID)
|
||||
/// <returns>Client response as string</returns>
|
||||
public string ValidateNickname(string url, ValidateNicknameRequestData info, string sessionId)
|
||||
{
|
||||
var output = _profileController.ValidateNickname(info, sessionID);
|
||||
|
||||
return output switch
|
||||
return _profileController.ValidateNickname(info, sessionId) switch
|
||||
{
|
||||
"taken" => _httpResponse.GetBody<object?>(null, BackendErrorCodes.NicknameNotUnique, "The nickname is already in use"),
|
||||
"tooshort" => _httpResponse.GetBody<object?>(null, BackendErrorCodes.NicknameNotValid, "The nickname is too short"),
|
||||
NicknameValidationResult.Taken => _httpResponse.GetBody<object?>(null, BackendErrorCodes.NicknameNotUnique, $"{BackendErrorCodes.NicknameNotUnique} - "),
|
||||
NicknameValidationResult.Short => _httpResponse.GetBody<object?>(null, BackendErrorCodes.NicknameNotValid, $"{BackendErrorCodes.NicknameNotValid} - "),
|
||||
_ => _httpResponse.GetBody(
|
||||
new
|
||||
{
|
||||
@@ -116,11 +115,12 @@ public class ProfileCallbacks(
|
||||
/// Handle client/game/profile/nickname/reserved
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public string GetReservedNickname(string url, EmptyRequestData _, string sessionID)
|
||||
public string GetReservedNickname(string url, EmptyRequestData _, string sessionId)
|
||||
{
|
||||
var fullProfile = _profileHelper.GetFullProfile(sessionID);
|
||||
var fullProfile = _profileHelper.GetFullProfile(sessionId);
|
||||
if (fullProfile?.ProfileInfo?.Username is not null)
|
||||
{
|
||||
// Send players name back to them
|
||||
return _httpResponse.GetBody(fullProfile?.ProfileInfo?.Username);
|
||||
}
|
||||
|
||||
@@ -132,9 +132,9 @@ public class ProfileCallbacks(
|
||||
/// Called when creating a character when choosing a character face/voice
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public string GetProfileStatus(string url, EmptyRequestData _, string sessionID)
|
||||
public string GetProfileStatus(string url, EmptyRequestData _, string sessionId)
|
||||
{
|
||||
return _httpResponse.GetBody(_profileController.GetProfileStatus(sessionID));
|
||||
return _httpResponse.GetBody(_profileController.GetProfileStatus(sessionId));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -6,6 +6,7 @@ using SPTarkov.Server.Core.Models.Eft.Common.Tables;
|
||||
using SPTarkov.Server.Core.Models.Eft.Launcher;
|
||||
using SPTarkov.Server.Core.Models.Eft.Profile;
|
||||
using SPTarkov.Server.Core.Models.Enums;
|
||||
using SPTarkov.Server.Core.Models.Spt.Launcher;
|
||||
using SPTarkov.Server.Core.Models.Utils;
|
||||
using SPTarkov.Server.Core.Routers;
|
||||
using SPTarkov.Server.Core.Servers;
|
||||
@@ -104,54 +105,54 @@ public class ProfileController(
|
||||
/// <summary>
|
||||
/// Handle client/game/profile/list
|
||||
/// </summary>
|
||||
/// <param name="sessionID">Session/Player id</param>
|
||||
/// <param name="sessionId">Session/Player id</param>
|
||||
/// <returns>Return a full profile, scav and pmc profiles + meta data</returns>
|
||||
public virtual List<PmcData> GetCompleteProfile(string sessionID)
|
||||
public virtual List<PmcData> GetCompleteProfile(string sessionId)
|
||||
{
|
||||
return _profileHelper.GetCompleteProfile(sessionID);
|
||||
return _profileHelper.GetCompleteProfile(sessionId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handle client/game/profile/create
|
||||
/// </summary>
|
||||
/// <param name="request">Create profile request</param>
|
||||
/// <param name="sessionID">Player id</param>
|
||||
/// <param name="sessionId">Player id</param>
|
||||
/// <returns>Player id</returns>
|
||||
public virtual string CreateProfile(ProfileCreateRequestData request, string sessionID)
|
||||
public virtual string CreateProfile(ProfileCreateRequestData request, string sessionId)
|
||||
{
|
||||
return _createProfileService.CreateProfile(sessionID, request);
|
||||
return _createProfileService.CreateProfile(sessionId, request);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Generate a player scav object
|
||||
/// PMC profile MUST exist first before player-scav can be generated
|
||||
/// </summary>
|
||||
/// <param name="sessionID">Player id</param>
|
||||
/// <param name="sessionId">Player id</param>
|
||||
/// <returns>PmcData</returns>
|
||||
public virtual PmcData GeneratePlayerScav(string sessionID)
|
||||
public virtual PmcData GeneratePlayerScav(string sessionId)
|
||||
{
|
||||
return _playerScavGenerator.Generate(sessionID);
|
||||
return _playerScavGenerator.Generate(sessionId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handle client/game/profile/nickname/validate
|
||||
/// </summary>
|
||||
/// <param name="request">Validate nickname request</param>
|
||||
/// <param name="sessionID">Session/Player id</param>
|
||||
/// <param name="sessionId">Session/Player id</param>
|
||||
/// <returns></returns>
|
||||
public virtual string ValidateNickname(ValidateNicknameRequestData request, string sessionID)
|
||||
public virtual NicknameValidationResult ValidateNickname(ValidateNicknameRequestData request, string sessionId)
|
||||
{
|
||||
if (request.Nickname.Length < 3)
|
||||
if (request.Nickname?.Length < 3)
|
||||
{
|
||||
return "tooshort";
|
||||
return NicknameValidationResult.Short;
|
||||
}
|
||||
|
||||
if (_profileHelper.IsNicknameTaken(request, sessionID))
|
||||
if (_profileHelper.IsNicknameTaken(request, sessionId))
|
||||
{
|
||||
return "taken";
|
||||
return NicknameValidationResult.Taken;
|
||||
}
|
||||
|
||||
return "OK";
|
||||
return NicknameValidationResult.Valid;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -159,21 +160,21 @@ public class ProfileController(
|
||||
/// Client allows player to adjust their profile name
|
||||
/// </summary>
|
||||
/// <param name="request">Change nickname request</param>
|
||||
/// <param name="sessionID">Player id</param>
|
||||
/// <param name="sessionId">Player id</param>
|
||||
/// <returns></returns>
|
||||
public virtual string ChangeNickname(ProfileChangeNicknameRequestData request, string sessionID)
|
||||
public virtual NicknameValidationResult ChangeNickname(ProfileChangeNicknameRequestData request, string sessionId)
|
||||
{
|
||||
var output = ValidateNickname(
|
||||
new ValidateNicknameRequestData
|
||||
{
|
||||
Nickname = request.Nickname
|
||||
},
|
||||
sessionID
|
||||
sessionId
|
||||
);
|
||||
|
||||
if (output == "OK")
|
||||
if (output == NicknameValidationResult.Valid)
|
||||
{
|
||||
var pmcData = _profileHelper.GetPmcProfile(sessionID);
|
||||
var pmcData = _profileHelper.GetPmcProfile(sessionId);
|
||||
|
||||
pmcData.Info.Nickname = request.Nickname;
|
||||
pmcData.Info.LowerNickname = request.Nickname.ToLower();
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace SPTarkov.Server.Core.Models.Spt.Launcher
|
||||
{
|
||||
public enum NicknameValidationResult
|
||||
{
|
||||
Taken,
|
||||
Short,
|
||||
Valid
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user