public override string GeneratePasswordResetToken(string userName, int tokenExpirationInMinutesFromNow)
{
if (string.IsNullOrEmpty(userName))
{
throw CreateArgumentNullOrEmptyException("userName");
}
using ($safeprojectname$Context context = new $safeprojectname$Context())
{
dynamic user = context.Users.FirstOrDefault(Usr => Usr.Username == userName);
if (user == null)
{
throw new InvalidOperationException(string.Format("User not found: {0}", userName));
}
if (!user.IsConfirmed)
{
throw new InvalidOperationException(string.Format("User not found: {0}", userName));
}
string token = null;
if (user.PasswordVerificationTokenExpirationDate > DateTime.UtcNow)
{
token = user.PasswordVerificationToken;
}
else
{
token = CodeFirstCrypto.GenerateToken();
}
user.PasswordVerificationToken = token;
user.PasswordVerificationTokenExpirationDate = DateTime.UtcNow.AddMinutes(tokenExpirationInMinutesFromNow);
context.SaveChanges();
return token;
}
}