コード例 #1
0
        public async Task <IHttpActionResult> Post(EmailVerificationRequestModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest("Invalid email verification request."));
            }

            model.Code = model.Code.ToIdentityGeneratedTokenFormat();

            bool isEmailVerificationCodeExist = await _userService.IsEmailVerificationCodeExist(model);

            if (!isEmailVerificationCodeExist)
            {
                return(BadRequest("Email confirmation code is not valid."));
            }

            var user = await _userService.GetUserAsNoTrackingAsync(model.UserId);

            if (user == null)
            {
                return(BadRequest("Invalid user email verification request."));
            }

            if (user.EmailConfirmed)
            {
                return(BadRequest("Email already verified."));
            }

            if (!string.Equals(user.EmailConfirmationCode, model.Code))
            {
                return(BadRequest("Email confirmation code is not valid."));
            }

            await _userService.ConfirmedEmailAsync(model.UserId, model.Code);

            return(Ok(true));
        }
コード例 #2
0
        public async Task <bool> IsEmailVerificationCodeExist(EmailVerificationRequestModel model)
        {
            var user = await UserManager.Users.AsNoTracking().SingleOrDefaultAsync(x => x.Id == model.UserId);

            return(!string.IsNullOrWhiteSpace(user?.EmailConfirmationCode));
        }