using System; using UnityEngine; using IchniOnline.Online.Network.Models; namespace IchniOnline.Online.Models { /// /// 登录缓存数据,使用 ES3 持久化 /// [Serializable] public class LoginCacheData { public string openId; public string unionId; public string name; public string avatar; public string email; public long cacheTimestamp; // Server session fields public string jwtToken; public string userId; public string displayName; public string avatarUrl; public int permission; public bool hasServerSession; public LoginCacheData() { } public LoginCacheData(string openId, string unionId, string name, string avatar, string email) { this.openId = openId; this.unionId = unionId; this.name = name; this.avatar = avatar; this.email = email; this.cacheTimestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds(); } public bool IsValid => hasServerSession && !string.IsNullOrEmpty(jwtToken); public void UpdateFromServerResponse(LoginResponseDto response) { this.jwtToken = response.Token; this.userId = response.User.UserId; this.displayName = response.User.DisplayName; this.avatarUrl = response.User.AvatarUrl; this.permission = response.User.Permission; this.hasServerSession = true; } public void ClearServerSession() { this.jwtToken = null; this.userId = null; this.displayName = null; this.avatarUrl = null; this.permission = 0; this.hasServerSession = false; } } }