51 lines
1.4 KiB
C#
51 lines
1.4 KiB
C#
namespace Fengling.Member.Domain.Aggregates.Users;
|
|
|
|
public class OAuthAuthorization : Entity<long>
|
|
{
|
|
public long MemberId { get; private set; }
|
|
public OAuthProvider Provider { get; private set; }
|
|
public string OpenId { get; private set; } = string.Empty;
|
|
public string? UnionId { get; private set; }
|
|
public string? AccessToken { get; private set; }
|
|
public string? RefreshToken { get; private set; }
|
|
public DateTime? TokenExpiredAt { get; private set; }
|
|
public DateTime AuthorizedAt { get; private set; } = DateTime.UtcNow;
|
|
public DateTime? LastLoginAt { get; private set; }
|
|
|
|
private OAuthAuthorization()
|
|
{
|
|
}
|
|
|
|
public static OAuthAuthorization Create(long memberId, OAuthProvider provider, string openId, string? unionId = null)
|
|
{
|
|
return new OAuthAuthorization
|
|
{
|
|
MemberId = memberId,
|
|
Provider = provider,
|
|
OpenId = openId,
|
|
UnionId = unionId,
|
|
AuthorizedAt = DateTime.UtcNow
|
|
};
|
|
}
|
|
|
|
public void UpdateUnionId(string? unionId)
|
|
{
|
|
if (unionId != null && UnionId != unionId)
|
|
{
|
|
UnionId = unionId;
|
|
}
|
|
}
|
|
|
|
public void RecordLogin()
|
|
{
|
|
LastLoginAt = DateTime.UtcNow;
|
|
}
|
|
|
|
public void UpdateToken(string accessToken, string? refreshToken, DateTime? expiredAt)
|
|
{
|
|
AccessToken = accessToken;
|
|
RefreshToken = refreshToken;
|
|
TokenExpiredAt = expiredAt;
|
|
}
|
|
}
|