public override string GeneratePasswordResetToken(string userName, int tokenExpirationInMinutesFromNow)
{
if (string.IsNullOrEmpty(userName))
{
throw CreateArgumentNullOrEmptyException("userName");
}
using (BlogUnitOfWork context = new BlogUnitOfWork(new ModelContextInit()))
{
dynamic user = context.Users.FirstOrDefault(Usr => Usr.Username == userName);
if (user == null)
{
throw new InvalidOperationException("El usuario no existe");
}
if (!user.IsConfirmed)
{
throw new InvalidOperationException("El usuario no existe");
}
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;
}
}