public PasswordResetResponse ResetPassword(string passHash, string resetToken) { try { PasswordReset reset = PasswordReset.OneWhere(c => c.Token == resetToken, Database); if (reset == null) { throw new InvalidTokenException(); } Instant timeOfRequest = new Instant(reset.DateTime.Value); Instant now = new Instant(); if (now.DiffInMinutes(timeOfRequest) > reset.ExpiresInMinutes.Value) { throw new InvalidTokenException(); } Password.Set(reset.UserOfUserId, passHash, Database); FireEvent(ResetPasswordSucceeded); return(GetSuccess <PasswordResetResponse>(true, "Password was successfully reset")); } catch (Exception ex) { LastException = ex; FireEvent(ResetPasswordFailed); return(GetFailure <PasswordResetResponse>(ex)); } }
public void ShouldBeSetDiffInMinutes() { Instant first = new Instant(); Instant second = new Instant(first.ToDateTime().AddMinutes(30)); int diff = first.DiffInMinutes(second); Expect.AreEqual(30, diff); diff = second.DiffInMinutes(first); Expect.AreEqual(30, diff); }