protected void BtnChange_Click(object sender, EventArgs e) { User u = Utils.GetUser(Session); string email = u != null ? u.Email : tbEmail.Text; bool canProceed = true; string hashPasswd = Hashing.Hash(tbPasswd1.Text); if (String.IsNullOrEmpty(email)) // czy wypełniono email { SetState(checkEmail, State.Wrong); canProceed = false; } if (String.IsNullOrEmpty(tbPasswd1.Text)) // czy wypełniono pierwsze hasło { SetState(checkPasswd1, State.Wrong); canProceed = false; } if (String.IsNullOrEmpty(tbPasswd2.Text)) // czy wypełniono drugie hasło { SetState(checkPasswd2, State.Wrong); canProceed = false; } if (canProceed) // jeśli tak to drugi etap weryfikacji { // Pobranie hasła do danego maila sqlEmailPassword.CancelSelectOnNullParameter = false; sqlEmailPassword.SelectCommand = "SELECT [Email], [Password] FROM [Users] WHERE ([Email] = '" + email + "')"; DataView dv = SQLHelper.SQLSelect(sqlEmailPassword); if (dv.Count == 0) // jeśli nie ma adresu { SetState(checkEmail, State.Wrong); labCheckEmail.InnerText = "Nie odnaleziono adresu w bazie danych"; canProceed = false; } if (tbPasswd1.Text != tbPasswd2.Text) // jeśli hasła są różne { SetState(checkPasswd1, State.Wrong); SetState(checkPasswd2, State.Wrong); labCheckPasswd.InnerText = "Hasła nie są zgodne."; canProceed = false; } else if (tbPasswd2.Text.Length < 8) // jeśli hasło za krótkie { SetState(checkPasswd1, State.Wrong); SetState(checkPasswd2, State.Wrong); labCheckPasswd.InnerText = "Hasło musi mieć minimum 8 znaków."; canProceed = false; } else if (Hashing.ComparePasswords(tbPasswd1.Text, dv[0][1].ToString())) // jeśli takie jak stare hasło { SetState(checkPasswd1, State.Wrong); SetState(checkPasswd2, State.Wrong); labCheckPasswd.InnerText = "Nowe hasło musi być różne od starego hasła."; canProceed = false; } if (canProceed) { // aktualizacja hasła w bazie sqlEmailPassword.UpdateCommand = "UPDATE [Users] SET [Password] = '" + hashPasswd + "' WHERE [Email] = '" + email + "'"; sqlEmailPassword.Update(); Session[Utils.PASSWDCHANGED] = tbEmail.Text; if (Utils.GetUser(Session) != null) { Response.Redirect("UserInfo.aspx"); // powrót na stronę usera jeśli zalogowany } else { Response.Redirect("LoginChange.aspx"); // na stronę informacyjną jeśli nie } } } }
protected void BtnChange_Click(object sender, EventArgs e) { Session[Utils.EMAILCHANGING] = true; bool canProceed = true; if (String.IsNullOrEmpty(tbEmail.Text)) { SetState(checkEmail, State.Wrong); canProceed = false; } labCheckPasswd.InnerText = ""; if (String.IsNullOrEmpty(tbPasswd.Text)) { SetState(checkPasswd, State.Wrong); labCheckPasswd.InnerText = "Wprowadź hasło"; canProceed = false; } if (canProceed) { // czy email już istnieje w bazie sqlDeleteUpdate.SelectCommand = "SELECT [Id] FROM [Users] WHERE [Email] = '" + tbEmail.Text + "'"; DataView dv = SQLHelper.SQLSelect(sqlDeleteUpdate); labCheckEmail.InnerText = ""; if (dv.Count > 0) { SetState(checkEmail, State.Wrong); labCheckEmail.InnerText = "Podany adres email istnieje już w bazie danych."; } else { // czy hasło do konta jest zgodne int userId = Utils.GetUser(Session).Id; sqlDeleteUpdate.SelectCommand = "SELECT [Password], [Active] FROM [Users] WHERE [Id] = " + userId; dv = SQLHelper.SQLSelect(sqlDeleteUpdate); if (Hashing.ComparePasswords(tbPasswd.Text, dv[0][0].ToString())) { // zaktualizuj maila i wyłącz konto sqlDeleteUpdate.UpdateCommand = "UPDATE [Users] SET [Email] = '" + tbEmail.Text + "', [Active] = 0 WHERE [Id] = " + userId; sqlDeleteUpdate.Update(); string hash = Hashing.Hash(userId + DateTime.Now.ToString()); // generate new hash if (!(bool)dv[0][1]) // if inactive { sqlDeleteUpdate.UpdateCommand = "UPDATE [Verification] SET [Code] = '" + hash + "' WHERE [UserId] = " + userId; sqlDeleteUpdate.Update(); // update database } else // if active account { sqlDeleteUpdate.InsertCommand = "INSERT INTO [Verification] VALUES (" + userId + ", '" + hash + "')"; sqlDeleteUpdate.Insert(); } Mailing.SendEmail(tbEmail.Text, hash); // send new email Utils.GetUser(Session).Email = tbEmail.Text; Utils.GetUser(Session).Active = false; Session[Utils.EMAILCHANGED] = true; Session[Utils.EMAILCHANGING] = null; Response.Redirect(Request.RawUrl); } } } }