public User VerifyEMailUrlCode(string urlCode) { var tokenQuery = from token in _db.Set <EMailVerificationToken>() where token.UrlCode.Equals(urlCode) select token; EMailVerificationToken t = tokenQuery.FirstOrDefault(); User u = null; if (t != null) { if (DateTime.UtcNow > t.ExpirationTime) { throw new Exception("Link Expired"); } var userQuery = from token in _db.Set <EMailVerificationToken>() join user in _db.Set <User>() on token.UserId equals user.Id select user; u = userQuery.FirstOrDefault(); if (u != null) { u.EMailVerificationTokens.Clear(); if (!u.IsVerified) { u.IsVerified = true; _userHub.SendUserVerified(u); } } } _db.SaveChanges(); return(u); }
public async Task <bool> SendEMailVerificationCodeAndAddToken(User user) { if (string.IsNullOrEmpty(user.EMail)) { return(false); } EMailVerificationToken token = AddEMailVerificationToken(user); return(await SendEMailWithUrlCode(user.EMail, token.UrlCode)); }
// Adds a verification token for the given user that expires in 30 days. private EMailVerificationToken AddEMailVerificationToken(User user) { EMailVerificationToken token = new EMailVerificationToken( Guid.NewGuid().ToString(), DateTime.UtcNow.AddDays(30)); user.EMailVerificationTokens.Add(token); token.UserId = user.Id; token.User = user; _db.SaveChanges(); return(token); }
private void RemoveEMailVerificationToken(User user, EMailVerificationToken token) { user.EMailVerificationTokens.Remove(token); _db.SaveChanges(); }