Beispiel #1
0
        private void SigninButton_Click(object sender, RoutedEventArgs e)
        {
            BetteryBusyIndicator.IsBusy = true;

            MessageText.Text = string.Empty;

            _worker.RunWorkerAsync();

            try
            {
                KioskServiceClient BKioskService = new KioskServiceClient();
                BetteryMember      betteryMember = BKioskService.AuthenticateUser(UserName.Text, Password.Password);
                // TODO: Persist Logged-in Member data for use during checkout, etc.

                BaseController.LoggedOnUser = new User(UserName.Text, Password.Password)
                {
                    BatteriesCheckedOut = betteryMember.BatteriesCheckedOut,
                    BatteriesInPlan     = betteryMember.BatteriesInPlan,
                    CustomerProfileID   = betteryMember.CustomerProfileID,
                    FirstName           = betteryMember.MemberFirstName,
                    MemberID            = betteryMember.MemberID,
                    LastName            = betteryMember.MemberLastName,
                    OutstandingCredit   = betteryMember.OutstandingCredit,
                };

                this.NavigationService.GoBack();
            }
            catch (Exception)
            {
                BaseController.LoggedOnUser = null;
            }
        }
        public BetteryMember AuthenticateUser(string UserName, string Password)
        {
            bool          isMember = false;
            BetteryMember Member   = new BetteryMember();

            SqlConnection sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["MemberDBContext"].ToString());

            try
            {
                bool      isAuthed       = false;
                string    passwordDigest = String.Empty;
                HashUtils hashUtils      = new HashUtils();

                SqlCommand sqlCMD = new SqlCommand("GetPasswordDigest", sqlConn);
                sqlCMD.CommandType = CommandType.StoredProcedure;

                sqlCMD.Parameters.Add(new SqlParameter("@UserName", UserName));

                sqlConn.Open();
                if (sqlCMD.ExecuteScalar() != null)
                {
                    passwordDigest = sqlCMD.ExecuteScalar().ToString();
                }

                sqlConn.Close();
                if (passwordDigest != String.Empty)
                {
                    string salt = passwordDigest.Substring(passwordDigest.Length - 8);
                    string hash = passwordDigest.Substring(0, passwordDigest.Length - 8);

                    isAuthed = hashUtils.VerifyHashString(Password, hash, salt);
                }

                if (isAuthed)
                {
                    sqlCMD             = new SqlCommand("SwapStationAuthenticate", sqlConn);
                    sqlCMD.CommandType = CommandType.StoredProcedure;

                    sqlCMD.Parameters.Add(new SqlParameter("@UserName", UserName));
                    sqlCMD.Parameters.Add(new SqlParameter("@Password", passwordDigest));

                    sqlConn.Open();
                    SqlDataReader reader = sqlCMD.ExecuteReader();

                    while (reader.Read())
                    {
                        isMember = true;
                        Member.MemberFirstName = reader["FirstName"].ToString();
                        Member.MemberLastName  = reader["LastName"].ToString();
                        Member.MemberID        = (int)reader["MemberID"];
                        if (Convert.IsDBNull(reader["AccountBalance"]))
                        {
                            Member.AccountBalance = 0m;
                        }
                        else
                        {
                            Member.AccountBalance = reader.GetDecimal(reader.GetOrdinal("AccountBalance"));
                        }

                        if (reader["CustomerProfileID"] != System.DBNull.Value)
                        {
                            Member.CustomerProfileID = reader["CustomerProfileID"].ToString();
                        }
                        if (reader["PaymentProfileID"] != System.DBNull.Value)
                        {
                            Member.PaymentProfileID = reader["PaymentProfileID"].ToString();
                        }
                        if (reader["BatteryPacksInPlan"] != System.DBNull.Value)
                        {
                            Member.BatteryPacksInPlan = (int)reader["BatteryPacksInPlan"];
                        }
                        if (reader["BatteryPacksCheckedOut"] != System.DBNull.Value)
                        {
                            Member.BatteryPacksCheckedOut = (int)reader["BatteryPacksCheckedOut"];
                        }
                        if (reader["MemberTotalBatteries"] != System.DBNull.Value)
                        {
                            Member.MemberTotalBatteries = (int)reader["MemberTotalBatteries"];
                        }
                        if (reader["FreeCases"] != System.DBNull.Value)
                        {
                            Member.FreeCases = (int)reader["FreeCases"];
                        }
                        if (reader["CCExpireDate"] != System.DBNull.Value)
                        {
                            Member.CCExPireDate = reader["CCExpireDate"].ToString();
                        }
                        if (reader["CCLastFourDigits"] != System.DBNull.Value)
                        {
                            Member.CCLastFourDigits = reader["CCLastFourDigits"].ToString();
                        }
                        if (reader["CCLastFourDigits"] != System.DBNull.Value)
                        {
                            Member.CCLastFourDigits = reader["CCLastFourDigits"].ToString();
                        }
                        if (reader["GroupID"] != System.DBNull.Value)
                        {
                            Member.GroupID = (int)reader["GroupID"];
                        }
                        if (reader["CorpAccountID"] != System.DBNull.Value)
                        {
                            Member.GroupID = Common.Constants.Group.CorpAccount;
                        }
                    }
                }


                if (isMember)
                {
                    return(Member);
                }
                else
                {
                    return(null);
                }
            }
            catch
            {
                //  TODO: Log Error
                throw;
            }
            finally
            {
                sqlConn.Close();
            }
        }