77 lines
2.7 KiB
C#
77 lines
2.7 KiB
C#
|
using System;
|
|||
|
using Codice.Client.Common;
|
|||
|
using Codice.CM.Common;
|
|||
|
using Codice.LogWrapper;
|
|||
|
using PlasticGui;
|
|||
|
using PlasticGui.WorkspaceWindow.Home;
|
|||
|
using Unity.PlasticSCM.Editor.Configuration.CloudEdition.Welcome;
|
|||
|
using Unity.PlasticSCM.Editor.WebApi;
|
|||
|
using UnityEngine;
|
|||
|
|
|||
|
namespace Unity.PlasticSCM.Editor.Configuration
|
|||
|
{
|
|||
|
internal static class AutoConfig
|
|||
|
{
|
|||
|
internal static TokenExchangeResponse PlasticCredentials(
|
|||
|
string unityAccessToken,
|
|||
|
string serverName)
|
|||
|
{
|
|||
|
SetupUnityEditionToken.CreateCloudEditionTokenIfNeeded();
|
|||
|
|
|||
|
var startTick = Environment.TickCount;
|
|||
|
|
|||
|
var tokenExchangeResponse = WebRestApiClient.PlasticScm.TokenExchange(unityAccessToken);
|
|||
|
|
|||
|
mLog.DebugFormat("TokenExchange time {0} ms", Environment.TickCount - startTick);
|
|||
|
|
|||
|
if (tokenExchangeResponse == null)
|
|||
|
{
|
|||
|
var warning = PlasticLocalization.GetString(PlasticLocalization.Name.TokenExchangeResponseNull);
|
|||
|
mLog.Warn(warning);
|
|||
|
Debug.LogWarning(warning);
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
if (tokenExchangeResponse.Error != null)
|
|||
|
{
|
|||
|
var warning = string.Format(
|
|||
|
PlasticLocalization.GetString(PlasticLocalization.Name.TokenExchangeResponseError),
|
|||
|
tokenExchangeResponse.Error.Message, tokenExchangeResponse.Error.ErrorCode);
|
|||
|
mLog.ErrorFormat(warning);
|
|||
|
Debug.LogWarning(warning);
|
|||
|
return tokenExchangeResponse;
|
|||
|
}
|
|||
|
|
|||
|
if (string.IsNullOrEmpty(tokenExchangeResponse.AccessToken))
|
|||
|
{
|
|||
|
var warning = string.Format(
|
|||
|
PlasticLocalization.GetString(PlasticLocalization.Name.TokenExchangeAccessEmpty),
|
|||
|
tokenExchangeResponse.User);
|
|||
|
mLog.InfoFormat(warning);
|
|||
|
Debug.LogWarning(warning);
|
|||
|
return tokenExchangeResponse;
|
|||
|
}
|
|||
|
|
|||
|
// This creates the client.conf if needed but doesn't overwrite it if it exists already,
|
|||
|
// and it also updates the profiles.conf and tokens.conf with the new AccessToken
|
|||
|
UserAccounts.SaveAccount(
|
|||
|
serverName,
|
|||
|
SEIDWorkingMode.SSOWorkingMode, // Hub sign-in working mode
|
|||
|
tokenExchangeResponse.User,
|
|||
|
tokenExchangeResponse.AccessToken,
|
|||
|
null,
|
|||
|
null,
|
|||
|
null);
|
|||
|
|
|||
|
CloudEditionWelcomeWindow.SaveDefaultCloudServer(
|
|||
|
serverName,
|
|||
|
tokenExchangeResponse.User);
|
|||
|
|
|||
|
return tokenExchangeResponse;
|
|||
|
}
|
|||
|
|
|||
|
static readonly ILog mLog = PlasticApp.GetLogger("AutoConfig");
|
|||
|
}
|
|||
|
}
|
|||
|
|