private void AccountGUI() { if (APIUser.IsLoggedInWithCredentials) { OnCreatorStatusGUI(); } else { NotLoggedInGUI(); } GUILayout.BeginHorizontal(); GUILayout.Label(""); if (APIUser.IsLoggedInWithCredentials) { if (GUILayout.Button("Logout")) { AS_Main.Logout(true); } } else { if (GUILayout.Button("Login")) { AS_Main.Login(); } } EditorGUILayout.Separator(); if (GUILayout.Button("Remove")) { AS_Main.Remove(); } GUILayout.Label(""); GUILayout.EndHorizontal(); }
static void OnTwoFactorAuthenticationGUI() { const int ENTER_2FA_CODE_BORDER_SIZE = 20; const int ENTER_2FA_CODE_BUTTON_WIDTH = 260; const int ENTER_2FA_CODE_VERIFY_BUTTON_WIDTH = ENTER_2FA_CODE_BUTTON_WIDTH / 2; const int ENTER_2FA_CODE_ENTRY_REGION_WIDTH = 130; const int ENTER_2FA_CODE_MIN_WINDOW_WIDTH = ENTER_2FA_CODE_VERIFY_BUTTON_WIDTH + ENTER_2FA_CODE_ENTRY_REGION_WIDTH + (ENTER_2FA_CODE_BORDER_SIZE * 3); bool isValidAuthenticationCode = IsValidAuthenticationCodeFormat(); // Invalid code text if (entered2faCodeIsInvalid) { GUIStyle s = new GUIStyle(EditorStyles.label); s.alignment = TextAnchor.UpperLeft; s.normal.textColor = Color.red; s.fontSize = WARNING_FONT_HEIGHT; s.padding = new RectOffset(0, 0, (WARNING_ICON_SIZE - s.fontSize) / 2, 0); s.fixedHeight = WARNING_ICON_SIZE; EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); EditorGUILayout.BeginVertical(); GUILayout.FlexibleSpace(); EditorGUILayout.BeginHorizontal(); var textDimensions = s.CalcSize(new GUIContent(ENTER_2FA_CODE_INVALID_CODE_STRING)); GUILayout.Label(new GUIContent(warningIconGraphic), GUILayout.Width(WARNING_ICON_SIZE), GUILayout.Height(WARNING_ICON_SIZE)); EditorGUILayout.LabelField(ENTER_2FA_CODE_INVALID_CODE_STRING, s, GUILayout.Width(textDimensions.x)); EditorGUILayout.EndHorizontal(); GUILayout.FlexibleSpace(); EditorGUILayout.EndVertical(); GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); } else if (checkingCode) { // Display checking code message EditorGUILayout.BeginVertical(); GUILayout.FlexibleSpace(); EditorGUILayout.BeginHorizontal(); GUIStyle s = new GUIStyle(EditorStyles.label); s.alignment = TextAnchor.MiddleCenter; s.fixedHeight = WARNING_ICON_SIZE; EditorGUILayout.LabelField(CHECKING_2FA_CODE_STRING, s, GUILayout.Height(WARNING_ICON_SIZE)); EditorGUILayout.EndHorizontal(); GUILayout.FlexibleSpace(); EditorGUILayout.EndVertical(); } else { EditorGUILayout.BeginHorizontal(); GUILayout.Space(ENTER_2FA_CODE_BORDER_SIZE); GUILayout.FlexibleSpace(); GUIStyle titleStyle = new GUIStyle(EditorStyles.label); titleStyle.alignment = TextAnchor.MiddleCenter; titleStyle.wordWrap = true; EditorGUILayout.LabelField(ENTER_2FA_CODE_TITLE_STRING, titleStyle, GUILayout.Width(ENTER_2FA_CODE_MIN_WINDOW_WIDTH - (2 * ENTER_2FA_CODE_BORDER_SIZE)), GUILayout.Height(WARNING_ICON_SIZE), GUILayout.ExpandHeight(true)); GUILayout.FlexibleSpace(); GUILayout.Space(ENTER_2FA_CODE_BORDER_SIZE); EditorGUILayout.EndHorizontal(); } EditorGUILayout.BeginHorizontal(); GUILayout.Space(ENTER_2FA_CODE_BORDER_SIZE); GUILayout.FlexibleSpace(); Vector2 size = EditorStyles.boldLabel.CalcSize(new GUIContent(ENTER_2FA_CODE_LABEL_STRING)); EditorGUILayout.LabelField(ENTER_2FA_CODE_LABEL_STRING, EditorStyles.boldLabel, GUILayout.MaxWidth(size.x)); authenticationCode = EditorGUILayout.TextField(authenticationCode); string auth_username = username; string auth_password = password; if (AS_Main.IsSavedUser()) { auth_username = AS_Main.GetUsername(); auth_password = AS_Main.GetPassword(); } // Verify 2FA code button if (GUILayout.Button(ENTER_2FA_CODE_VERIFY_STRING, GUILayout.Width(ENTER_2FA_CODE_VERIFY_BUTTON_WIDTH))) { checkingCode = true; APIUser.VerifyTwoFactorAuthCode(authenticationCode, isValidAuthenticationCode ? API2FA.TIME_BASED_ONE_TIME_PASSWORD_AUTHENTICATION : API2FA.ONE_TIME_PASSWORD_AUTHENTICATION, auth_username, auth_password, delegate { // valid 2FA code submitted entered2faCodeIsInvalid = false; authorizationCodeWasVerified = true; checkingCode = false; showTwoFactorAuthenticationEntry = false; if (null != AS_Main.onAuthenticationVerifiedAction) { AS_Main.onAuthenticationVerifiedAction(); } }, delegate { entered2faCodeIsInvalid = true; checkingCode = false; } ); } GUILayout.FlexibleSpace(); GUILayout.Space(ENTER_2FA_CODE_BORDER_SIZE); EditorGUILayout.EndHorizontal(); GUILayout.FlexibleSpace(); EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); // after user has entered an invalid code causing the invalid code message to be displayed, // edit the code will change it's length meaning it is invalid format, so we can clear the invalid code setting until they resubmit if (previousAuthenticationCodeLength != authenticationCode.Length) { previousAuthenticationCodeLength = authenticationCode.Length; entered2faCodeIsInvalid = false; } GUI.enabled = true; GUILayout.FlexibleSpace(); GUILayout.Space(ENTER_2FA_CODE_BORDER_SIZE); EditorGUILayout.EndHorizontal(); GUILayout.FlexibleSpace(); // Two-Factor Authentication Help button EditorGUILayout.BeginHorizontal(); if (GUILayout.Button(ENTER_2FA_CODE_HELP_STRING)) { Application.OpenURL(TWO_FACTOR_AUTHENTICATION_HELP_URL); } EditorGUILayout.EndHorizontal(); // Cancel button EditorGUILayout.BeginHorizontal(); if (GUILayout.Button(ENTER_2FA_CODE_CANCEL_STRING)) { showTwoFactorAuthenticationEntry = false; AS_Main.Logout(true); } EditorGUILayout.EndHorizontal(); }