/// <summary> /// Create new user in database /// </summary> /// <param name="nickName"></param> /// <param name="password"></param> /// <param name="email"></param> /// <returns></returns> internal DbOperationStatus <User> CreateNew(string nickName, string password, string email) { DbOperationStatus <User> status = new DbOperationStatus <User>(); User newUser = new User() { Nickname = nickName, Email = email, ID = new Guid(), IsOnline = false, LastLoginDate = DateTime.MinValue, RegistrationDate = DateTime.Now, Verified = false, VerificationToken = Guid.NewGuid() }; using (var userPasswordCrypto = new UserPasswordCryptography(password)) { var encryptionResult = userPasswordCrypto.EncryptUserPassword(); newUser.Salt = encryptionResult.Salt; newUser.HashedPassword = encryptionResult.HashedPassword; } var num = newUser.Salt.Count(); _comparerDatabaseContext.Users.Add(newUser); status.RowsAffected = _comparerDatabaseContext.SaveChanges(); status.OperationSuccess = true; status.ReturnedObject = newUser; return(status); }
/// <summary> /// Using password cryprography checks password match /// </summary> /// <param name="user">User</param> /// <param name="plainPassword">Password entered by user</param> /// <returns>Password match status</returns> internal bool UserLoginPasswordMatch(User user, string plainPassword) { using (var userPassCrypto = new UserPasswordCryptography(plainPassword)) { return(userPassCrypto.AuthenticateUserPassword(user)); } }
/// <summary> /// Set new password to the user /// </summary> /// <param name="userID">User ID</param> /// <param name="newPassword">Password selected by user</param> /// <returns></returns> internal DbOperationStatus <User> UpdatePassword(Guid userID, string newPassword) { DbOperationStatus <User> status = new DbOperationStatus <User> { QueryResult = _comparerDatabaseContext.Users.Where(u => u.ID.Equals(userID)) .SingleOrDefault() }; if (status.QueryResult != null) { User user = status.QueryResult as User; using (var userPasswordCrypto = new UserPasswordCryptography(newPassword)) { var encryptionResult = userPasswordCrypto.EncryptUserPassword(); user.Salt = encryptionResult.Salt; user.HashedPassword = encryptionResult.HashedPassword; } status.RowsAffected = _comparerDatabaseContext.SaveChanges(); status.OperationSuccess = true; } else { _logger.LogError("Update user's password - no user has been found"); status.OperationSuccess = false; } return(status); }