63 lines
1.8 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|