Files
sbox-public/engine/Sandbox.Engine/Systems/Networking/PlayerInfo/UserInfo.cs
Carson Kompon f3054a2d3f Fix Dresser component fully trusting user data (#4004)
When a Dresser component is set to `ClothingSource.OwnerConnection`, it will verify the owner connection actually owns the items they are attempting to wear using the Steam API. This means users can't just add items they never owned to their avatar forcefully.
2026-03-17 07:56:48 -04:00

48 lines
1.2 KiB
C#

namespace Sandbox;
[Expose]
internal struct UserInfo
{
public SteamId SteamId { get; set; }
public string DisplayName { get; set; }
public DateTimeOffset ConnectionTime { get; set; }
public Dictionary<string, string> UserData { get; set; }
public int EngineVersion { get; internal set; }
public SteamId PartyId { get; internal set; }
public byte[] AuthTicket { get; set; }
public Guid HandshakeId { get; set; }
public bool IsVr { get; set; }
public byte[] InventoryBlob { get; set; }
/// <summary>
/// Build info for the local user, which will then get sent to the server and possibly shared between all clients
/// </summary>
internal static UserInfo Local
{
get
{
var ui = new UserInfo
{
ConnectionTime = DateTime.UtcNow,
SteamId = Utility.Steam.SteamId,
DisplayName = Utility.Steam.PersonaName,
EngineVersion = Engine.Protocol.Network,
UserData = new(),
PartyId = PartyRoom.Current?.Id ?? new( 0 ),
IsVr = VR.VRSystem.IsActive,
InventoryBlob = Services.Inventory.CurrentBlob
};
//
// Put all the userinfo vars in
//
foreach ( var convar in ConVarSystem.Members.Values.Where( x => x.IsUserInfo ) )
{
ui.UserData[convar.Name] = convar.Value;
}
return ui;
}
}
}