fengling-member-service/src/Fengling.Member.Domain/Aggregates/Users/OAuthAuthorization.cs

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;
}
}