Repository URL to install this package:
Version:
1.3.1 ▾
|
using System;
using System.Linq;
using System.Reflection;
using System.Text;
using Fluctio.FluctioSim.EditorUtils.EditorGeneral;
using Fluctio.FluctioSim.Utils.General;
using Fluctio.FluctioSim.Utils.SerializableClasses;
using IdentityModel.OidcClient;
using IdentityModel.OidcClient.Results;
using UnityEngine;
namespace Fluctio.FluctioSim.EditorCore.AccountManagement
{
[Serializable]
internal class AccountInfo
{
[field: SerializeField] internal string AccessToken { get; private set; }
[field: SerializeField] internal string IdentityToken { get; private set; }
[field: SerializeField] internal string RefreshToken { get; private set; }
[field: SerializeField] internal SerializableDateTime TokensValidTill { get; private set; }
[field: SerializeField] public LicenseType LicenseType { get; private set; }
[field: SerializeField] public SerializableDateTime LicenseValidTill { get; private set; }
[field: SerializeField] public string LicenseGiftedBy { get; private set; }
[field: SerializeField] public string Email { get; private set; }
[field: SerializeField] public string PictureUrl { get; private set; }
[field: SerializeField] public string GivenName { get; private set; }
[field: SerializeField] public string FamilyName { get; private set; }
[field: SerializeField] public bool EnableDebug { get; private set; }
public AccountInfo(LoginResult loginResult)
{
AccessToken = loginResult.AccessToken;
IdentityToken = loginResult.IdentityToken;
RefreshToken = loginResult.RefreshToken;
TokensValidTill = loginResult.AccessTokenExpiration.UtcDateTime;
LicenseType = LicenseType.None;
LicenseValidTill = DateTime.MaxValue;
LicenseGiftedBy = "";
var identityTokenClaims = Util.ParseJwt(IdentityToken);
var accessTokenClaims = Util.ParseJwt(AccessToken);
Email = (string)identityTokenClaims["email"] ?? throw new InvalidOperationException("Login result did not contain user's email");
PictureUrl = (string)identityTokenClaims["picture"] ?? "";
GivenName = (string)identityTokenClaims["given_name"] ?? "";
FamilyName = (string)identityTokenClaims["family_name"] ?? "";
EnableDebug = accessTokenClaims["permissions"]?.Children().Contains(DebugMode.DebugPermission) ?? false;
}
public void SetTokens(RefreshTokenResult refreshTokenResult)
{
AccessToken = refreshTokenResult.AccessToken ?? AccessToken;
IdentityToken = refreshTokenResult.IdentityToken ?? IdentityToken;
RefreshToken = refreshTokenResult.RefreshToken ?? RefreshToken;
TokensValidTill = refreshTokenResult.AccessTokenExpiration.UtcDateTime;
}
public void SetLicenseInfo(LicenseInfo licenseInfo)
{
LicenseType = licenseInfo.Type;
LicenseValidTill = licenseInfo.ExpirationDate ?? DateTime.MaxValue;
LicenseGiftedBy = licenseInfo.GiftedBy ?? "";
}
public string GetDebugInfo()
{
return GetType()
.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
.Aggregate(
new StringBuilder(),
(stringBuilder, propertyInfo) => stringBuilder.AppendFormat(
"{0}: {1}\n",
propertyInfo.GetDescription(),
propertyInfo.GetValue(this)),
stringBuilder => stringBuilder.ToString()
);
}
}
}