Example #1
0
        public LauncherSignInResult LauncherSignIn(LauncherSignInData data)
        {
            try
            {
                LauncherSignInResult result = new LauncherSignInResult();

                bool succeeded = data.Authenticate();

                if (succeeded == true)
                {
                    result.Status = CheckInStatus.Ok;

                    using (CSSDataContext db = new CSSDataContext())
                    {
                        if (Identity.IsLinkedToAnOlderAccount(db, data.Username) == true)
                        {
                            result.LinkedAccount = Identity.GetOldestLinkedAcccountUsername(db, data.Username);
                            result.Status        = CheckInStatus.AccountLinked;
                        }
                    }
                }
                else
                {
                    result.Status = CheckInStatus.InvalidCredentials;
                }

                return(result);
            }
            catch (Exception error)
            {
                Error.Write(error);
                throw;
            }
        }
        private void LauncherSignInComplete(LauncherSignInResult launcherSignInResult)
        {
            if (string.IsNullOrEmpty(launcherSignInResult.LinkedAccount) == false)
            {
                //OfflineLaunch.ShowOfflineLaunchForLinkedAccount(this, AuthenticatedData.PersistedUser, launcherSignInResult.LinkedAccount);
                ShowOfflineLaunchOption(AuthenticatedData.PersistedUser, launcherSignInResult.LinkedAccount, true);
                return;
            }

            switch (launcherSignInResult.Status)
            {
            case CheckInStatus.AccountLinked:
                throw new Exception("Status: AccountLinked - should never get here.");

            case CheckInStatus.InvalidCredentials:
                ShowMessageBox("The stored account credentials are no longer valid, please log in again.");
                CompleteFormProgressAndClose(System.Windows.Forms.DialogResult.None);
                break;

            case CheckInStatus.InvalidHash:
                ShowMessageBox("The machine hash was not valid, please log in again.");
                CompleteFormProgressAndClose(System.Windows.Forms.DialogResult.None);
                break;

            case CheckInStatus.Ok:
                CompleteFormProgressAndClose(System.Windows.Forms.DialogResult.OK);
                break;

            case CheckInStatus.Timeout:
                ShowMessageBox("A timeout occurred trying to validate your stored credentials. Please log in again.");
                CompleteFormProgressAndClose(System.Windows.Forms.DialogResult.None);
                break;

            case CheckInStatus.VirtualMachineBlocked:
                ShowVirtualMachineInfo(true);
                break;

            case CheckInStatus.AccountLocked:
                ShowMessageBox("Your account has been locked, please go to the forums for help.");
                CompleteFormProgressAndClose(System.Windows.Forms.DialogResult.None);
                break;

            case CheckInStatus.PermissionDenied:
                ShowMessageBox("Permission denied, please see the forums for help.");
                CompleteFormProgressAndClose(System.Windows.Forms.DialogResult.None);
                break;

            default:
                throw new NotSupportedException(launcherSignInResult.Status.ToString());
            }
        }
        private void LauncherSignInComplete(LauncherSignInResult launcherSignInResult)
        {
            if (string.IsNullOrEmpty(launcherSignInResult.LinkedAccount) == false)
            {
                //OfflineLaunch.ShowOfflineLaunchForLinkedAccount(this, AuthenticatedData.PersistedUser, launcherSignInResult.LinkedAccount);
                ShowOfflineLaunchOption(AuthenticatedData.PersistedUser, launcherSignInResult.LinkedAccount, true);
                return;
            }

            switch (launcherSignInResult.Status)
            {
                case CheckInStatus.AccountLinked:
                    throw new Exception("Status: AccountLinked - should never get here.");

                case CheckInStatus.InvalidCredentials:
                    ShowMessageBox("The stored account credentials are no longer valid, please log in again.");
                    CompleteFormProgressAndClose(System.Windows.Forms.DialogResult.None);
                    break;

                case CheckInStatus.InvalidHash:
                    ShowMessageBox("The machine hash was not valid, please log in again.");
                    CompleteFormProgressAndClose(System.Windows.Forms.DialogResult.None);
                    break;

                case CheckInStatus.Ok:
                    CompleteFormProgressAndClose(System.Windows.Forms.DialogResult.OK);
                    break;

                case CheckInStatus.Timeout:
                    ShowMessageBox("A timeout occurred trying to validate your stored credentials. Please log in again.");
                    CompleteFormProgressAndClose(System.Windows.Forms.DialogResult.None);
                    break;

                case CheckInStatus.VirtualMachineBlocked:
                    ShowVirtualMachineInfo(true);
                    break;

                case CheckInStatus.AccountLocked:
                    ShowMessageBox("Your account has been locked, please go to the forums for help.");
                    CompleteFormProgressAndClose(System.Windows.Forms.DialogResult.None);
                    break;

                case CheckInStatus.PermissionDenied:
                    ShowMessageBox("Permission denied, please see the forums for help.");
                    CompleteFormProgressAndClose(System.Windows.Forms.DialogResult.None);
                    break;

                default:
                    throw new NotSupportedException(launcherSignInResult.Status.ToString());
            }
        }
        /// <summary>
        /// Verifies that the input username and password are correct
        /// </summary>
        public static void LauncherSignIn(string username, string password, LauncherSignInCompleteDelegate finished)
        {
			bool updatePersistedCredentials = String.IsNullOrEmpty(username) == false && String.IsNullOrEmpty(password) == false;

			if (updatePersistedCredentials == true)
			{
				AuthenticatedData.SetLogin(username, password);
			}

            TaskHandler.RunTask(delegate() {

               LauncherSignInResult result = new LauncherSignInResult();

                try
                {
					LoginResult blackBoxData = Service.GetBlackBoxForUser(new LoginData()
					{
						Alias = AuthenticatedData.PersistedUser,
						LobbyId = null,
						LobbyIdSpecified = false,
						Password = AuthenticatedData.PersistedPass,
						SessionId = 0, 
						SessionIdSpecified = false,
						Username = AuthenticatedData.PersistedUser
					});

					if (blackBoxData.Status == LoginStatus.Authenticated)
					{

						Log.Write("ServiceHandler::LauncherSignIn() - Data received for: " + AuthenticatedData.PersistedUser + ", data length: " + blackBoxData.BlackboxData.Length);

						string message = null;
						string ticket = null;
						var checkInStatus = SessionNegotiator.ValidateLogin(blackBoxData.BlackboxData, ref message, ref ticket);

						if (checkInStatus != CheckInStatus.Ok && checkInStatus != CheckInStatus.AccountLinked)
						{
							result.Status = checkInStatus;
							result.StatusSpecified = true;
							result.LinkedAccount = String.Empty;
						}
						else
						{
							// Attempt to verify the login credentials
							result = Service.LauncherSignIn(new LauncherSignInData());
						}
					}
					else
					{
						switch (blackBoxData.Status)
						{
							case LoginStatus.AccountLocked:
								result.Status = CheckInStatus.AccountLocked;
								break;

							case LoginStatus.InvalidCredentials:
								result.Status = CheckInStatus.InvalidCredentials;
								break;

							case LoginStatus.PermissionDenied:
								result.Status = CheckInStatus.PermissionDenied;
								break;

							default:
								throw new NotSupportedException(blackBoxData.Status.ToString());
						}
						
						result.StatusSpecified = true;
						result.LinkedAccount = String.Empty;
					}

					
                }
                catch(Exception error)
                {
                    result = new LauncherSignInResult() 
					{
						Status = CheckInStatus.Timeout,
						StatusSpecified = false
					};

                    Log.Write(error);
                }

				if (result.StatusSpecified == true && result.Status == CheckInStatus.Ok)
				{
					DataStore.Callsigns = null;

					if (updatePersistedCredentials == true)
						AuthenticatedData.PersistLogin(username, AuthenticatedData.PersistedPass);
				}

                finished(result);

            });
        }
Example #5
0
        /// <summary>
        /// Verifies that the input username and password are correct
        /// </summary>
        public static void LauncherSignIn(string username, string password, LauncherSignInCompleteDelegate finished)
        {
            bool updatePersistedCredentials = String.IsNullOrEmpty(username) == false && String.IsNullOrEmpty(password) == false;

            if (updatePersistedCredentials == true)
            {
                AuthenticatedData.SetLogin(username, password);
            }

            TaskHandler.RunTask(delegate() {
                LauncherSignInResult result = new LauncherSignInResult();

                try
                {
                    LoginResult blackBoxData = Service.GetBlackBoxForUser(new LoginData()
                    {
                        Alias              = AuthenticatedData.PersistedUser,
                        LobbyId            = null,
                        LobbyIdSpecified   = false,
                        Password           = AuthenticatedData.PersistedPass,
                        SessionId          = 0,
                        SessionIdSpecified = false,
                        Username           = AuthenticatedData.PersistedUser
                    });

                    if (blackBoxData.Status == LoginStatus.Authenticated)
                    {
                        Log.Write("ServiceHandler::LauncherSignIn() - Data received for: " + AuthenticatedData.PersistedUser + ", data length: " + blackBoxData.BlackboxData.Length);

                        string message    = null;
                        string ticket     = null;
                        var checkInStatus = SessionNegotiator.ValidateLogin(blackBoxData.BlackboxData, ref message, ref ticket);

                        if (checkInStatus != CheckInStatus.Ok && checkInStatus != CheckInStatus.AccountLinked)
                        {
                            result.Status          = checkInStatus;
                            result.StatusSpecified = true;
                            result.LinkedAccount   = String.Empty;
                        }
                        else
                        {
                            // Attempt to verify the login credentials
                            result = Service.LauncherSignIn(new LauncherSignInData());
                        }
                    }
                    else
                    {
                        switch (blackBoxData.Status)
                        {
                        case LoginStatus.AccountLocked:
                            result.Status = CheckInStatus.AccountLocked;
                            break;

                        case LoginStatus.InvalidCredentials:
                            result.Status = CheckInStatus.InvalidCredentials;
                            break;

                        case LoginStatus.PermissionDenied:
                            result.Status = CheckInStatus.PermissionDenied;
                            break;

                        default:
                            throw new NotSupportedException(blackBoxData.Status.ToString());
                        }

                        result.StatusSpecified = true;
                        result.LinkedAccount   = String.Empty;
                    }
                }
                catch (Exception error)
                {
                    result = new LauncherSignInResult()
                    {
                        Status          = CheckInStatus.Timeout,
                        StatusSpecified = false
                    };

                    Log.Write(error);
                }

                if (result.StatusSpecified == true && result.Status == CheckInStatus.Ok)
                {
                    DataStore.Callsigns = null;

                    if (updatePersistedCredentials == true)
                    {
                        AuthenticatedData.PersistLogin(username, AuthenticatedData.PersistedPass);
                    }
                }

                finished(result);
            });
        }
        public LauncherSignInResult LauncherSignIn(LauncherSignInData data)
        {
            try
            {
                LauncherSignInResult result = new LauncherSignInResult();

                string loginUserName;

                bool succeeded = data.Authenticate(out loginUserName);

                if (succeeded == true)
                {
                    result.Status        = CheckInStatus.Ok;
                    result.LoginUserName = loginUserName;

                    using (CSSDataContext db = new CSSDataContext())
                    {
                        var login = DataAccess.Login.FindLoginByUsernameOrCallsign(db, data.Username);

                        if (login == null)
                        {
                            result.Status = CheckInStatus.InvalidCredentials;
                        }
                        else if (Identity.IsLinkedToAnOlderAccount(db, data.Username) == true)
                        {
                            result.LinkedAccount = Identity.GetOldestLinkedAcccountUsername(db, data.Username);
                            result.Status        = CheckInStatus.AccountLinked;
                        }
                        else
                        {
                            result.LoginID = login.Id;
                        }
                    }
                }
                else
                {
                    using (CSSDataContext db = new CSSDataContext())
                    {
                        var login = DataAccess.Login.FindLoginByUsernameOrCallsign(db, data.Username);

                        if (login == null)
                        {
                            result.Status = CheckInStatus.InvalidCredentials;
                        }
                        else if (login.IsBanned == true)
                        {
                            result.Status = CheckInStatus.AccountLocked;
                        }
                        else
                        {
                            result.Status = CheckInStatus.InvalidCredentials;
                        }
                    }
                }

                return(result);
            }
            catch (Exception error)
            {
                Error.Write(error);
                throw;
            }
        }