/// <summary> /// Aendert das Passwort des Benutzers. /// </summary> /// <param name="newPassword">Neues Passwort.</param> /// <param name="oldPassword">Altes Passwort.</param> /// <param name="dbContext">Datenbankkontext für die Transaktion.</param> public void ChangePassword(string newPassword, string oldPassword, DataClasses1DataContext dbContext) { CheckPassword(newPassword); SaltedHash sh = new SaltedHash(); if (sh.VerifyHashString(oldPassword, this.Password, this.Salt)) { if (this.LogDBContext == null) { this.LogDBContext = dbContext; } string passwordHash = string.Empty; string salt = string.Empty; sh.GetHashAndSaltString(newPassword, out passwordHash, out salt); this.Password = passwordHash; this.Salt = salt; } else { throw new Exception("Das alte Passwort konnte nicht verifiziert werden."); } }
/// <summary> /// Versucht, sich mit den gegebenen Login-Daten im System einuzloggen. /// </summary> /// <param name="login">Benutzername des Benutzers.</param> /// <param name="password">Passwort des Benutzers.</param> /// <returns>Datenbank-Id des Benutzers, falls Logon erfolgreich.</returns> public static int Logon(string login, string password) { using (DataClasses1DataContext dbContext = new DataClasses1DataContext()) { var user = dbContext.User.SingleOrDefault(q => q.Login == login); if (user == null) { throw new Exception("Benutzer / Passwort konnte nicht verifiziert werden."); } if (user.IsLocked) { throw new Exception("Der Benutzerzugang ist gesperrt."); } SaltedHash sh = new SaltedHash(); if (sh.VerifyHashString(password, user.Password, user.Salt)) { dbContext.LogUserId = user.Id; user.LastLogin = DateTime.Now; dbContext.WriteLogItem("Benutzer " + login + " eingeloggt.", LogTypes.INFO, user.Id, "User"); dbContext.SubmitChanges(); return user.Id; } else { throw new Exception("Benutzer / Passwort konnte nicht verifiziert werden."); } } }