Files
ichni_Official/Assets/Scripts/Online/Models/LoginCacheData.cs
2026-06-15 18:18:16 +08:00

63 lines
1.8 KiB
C#

using System;
using UnityEngine;
using IchniOnline.Online.Network.Models;
namespace IchniOnline.Online.Models
{
/// <summary>
/// 登录缓存数据,使用 ES3 持久化
/// </summary>
[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;
}
}
}