예제 #1
0
파일: User.cs 프로젝트: HedinRakot/KVS
        /// <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.");
            }
        }
예제 #2
0
파일: User.cs 프로젝트: HedinRakot/KVS
        /// <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.");
                }
            }
        }