Maze / Library /PackageCache /com.unity.collab-proxy@2.0.4 /Editor /PlasticSCM /Configuration /AutoConfig.cs
| using Codice.Client.Common; | |
| using Codice.CM.Common; | |
| using PlasticGui; | |
| using Unity.PlasticSCM.Editor.Configuration.CloudEdition.Welcome; | |
| using Unity.PlasticSCM.Editor.WebApi; | |
| namespace Unity.PlasticSCM.Editor.Configuration | |
| { | |
| internal static class AutoConfig | |
| { | |
| internal static TokenExchangeResponse PlasticCredentials( | |
| string unityAccessToken, | |
| string serverName, | |
| string projectPath) | |
| { | |
| SetupUnityEditionToken.CreateCloudEditionTokenIfNeeded(); | |
| bool isClientConfigConfigured = ClientConfig.IsConfigured(); | |
| if (!isClientConfigConfigured) | |
| { | |
| ConfigureClientConf.FromUnityAccessToken( | |
| unityAccessToken, serverName, projectPath); | |
| } | |
| TokenExchangeResponse tokenExchangeResponse = WebRestApiClient. | |
| PlasticScm.TokenExchange(unityAccessToken); | |
| if (tokenExchangeResponse.Error != null) | |
| return tokenExchangeResponse; | |
| CloudEditionWelcomeWindow.JoinCloudServer( | |
| serverName, | |
| tokenExchangeResponse.User, | |
| tokenExchangeResponse.AccessToken); | |
| if (!isClientConfigConfigured) | |
| return tokenExchangeResponse; | |
| ConfigureProfile.ForServerIfNeeded( | |
| serverName, | |
| tokenExchangeResponse.User); | |
| return tokenExchangeResponse; | |
| } | |
| static class ConfigureClientConf | |
| { | |
| internal static void FromUnityAccessToken( | |
| string unityAccessToken, | |
| string serverName, | |
| string projectPath) | |
| { | |
| CredentialsResponse response = WebRestApiClient. | |
| PlasticScm.GetCredentials(unityAccessToken); | |
| if (response.Error != null) | |
| { | |
| UnityEngine.Debug.LogErrorFormat( | |
| PlasticLocalization.GetString( | |
| PlasticLocalization.Name.ErrorGettingCredentialsCloudProject), | |
| response.Error.Message, | |
| response.Error.ErrorCode); | |
| return; | |
| } | |
| ClientConfigData configData = BuildClientConfigData( | |
| serverName, projectPath, response); | |
| ClientConfig.Get().Save(configData); | |
| } | |
| static ClientConfigData BuildClientConfigData( | |
| string serverName, | |
| string projectPath, | |
| CredentialsResponse response) | |
| { | |
| SEIDWorkingMode workingMode = GetWorkingMode(response.Type); | |
| ClientConfigData configData = new ClientConfigData(); | |
| configData.WorkspaceServer = serverName; | |
| configData.CurrentWorkspace = projectPath; | |
| configData.WorkingMode = workingMode.ToString(); | |
| configData.SecurityConfig = UserInfo.GetSecurityConfigStr( | |
| workingMode, | |
| response.Email, | |
| GetPassword(response.Token, response.Type)); | |
| configData.LastRunningEdition = InstalledEdition.Get(); | |
| return configData; | |
| } | |
| static string GetPassword( | |
| string token, | |
| CredentialsResponse.TokenType tokenType) | |
| { | |
| if (tokenType == CredentialsResponse.TokenType.Bearer) | |
| return BEARER_PREFIX + token; | |
| return token; | |
| } | |
| static SEIDWorkingMode GetWorkingMode(CredentialsResponse.TokenType tokenType) | |
| { | |
| if (tokenType == CredentialsResponse.TokenType.Bearer) | |
| return SEIDWorkingMode.SSOWorkingMode; | |
| return SEIDWorkingMode.LDAPWorkingMode; | |
| } | |
| const string BEARER_PREFIX = "Bearer "; | |
| } | |
| static class ConfigureProfile | |
| { | |
| internal static void ForServerIfNeeded(string serverName, string user) | |
| { | |
| ProfileManager profileManager = CmConnection.Get().GetProfileManager(); | |
| ServerProfile serverProfile = profileManager.GetProfileForServer(serverName); | |
| if (serverProfile != null) | |
| return; | |
| serverProfile = ProfileManager.CreateProfile( | |
| serverName, | |
| SEIDWorkingMode.SSOWorkingMode, | |
| user); | |
| profileManager.SaveProfile(serverProfile); | |
| } | |
| } | |
| } | |
| } | |