123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- 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 wkPath)
- {
- SetupUnityEditionToken.CreateCloudEditionTokenIfNeeded();
-
- bool isClientConfigConfigured = ClientConfig.IsConfigured();
- if (!isClientConfigConfigured)
- {
- ConfigureClientConf.FromUnityAccessToken(
- unityAccessToken, serverName, wkPath);
- }
-
- TokenExchangeResponse tokenExchangeResponse = WebRestApiClient.
- PlasticScm.TokenExchange(unityAccessToken);
-
- if (tokenExchangeResponse.Error != null)
- return tokenExchangeResponse;
-
- CloudEditionWelcomeWindow.JoinCloudServer(
- serverName,
- tokenExchangeResponse.User);
-
- if (!isClientConfigConfigured)
- return tokenExchangeResponse;
-
- ConfigureProfile.ForServerIfNeeded(
- serverName,
- tokenExchangeResponse.User);
-
- return tokenExchangeResponse;
- }
-
- static class ConfigureClientConf
- {
- internal static void FromUnityAccessToken(
- string unityAccessToken,
- string serverName,
- string wkPath)
- {
- 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, wkPath, response);
-
- ClientConfig.Get().Save(configData);
- }
-
- static ClientConfigData BuildClientConfigData(
- string serverName,
- string wkPath,
- CredentialsResponse response)
- {
- SEIDWorkingMode workingMode = GetWorkingMode(response.Type);
-
- ClientConfigData configData = new ClientConfigData();
-
- configData.WorkspaceServer = serverName;
- configData.CurrentWorkspace = wkPath;
- 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);
- }
- }
-
- }
-
- }
|