示例#1
0
        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);
        }
示例#2
0
        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));
        }
示例#3
0
        // 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);
        }
示例#4
0
 private void RemoveEMailVerificationToken(User user, EMailVerificationToken token)
 {
     user.EMailVerificationTokens.Remove(token);
     _db.SaveChanges();
 }