示例#1
0
 public IActionResult UserConfirm([FromQuery(Name = "uk")] string uk, [FromQuery(Name = "pk")] string pk)
 {
     #region Get User Confirmation Params
     EmailConfirmationDTO configParams = new EmailConfirmationDTO();
     configParams.Password = pk;
     configParams.Token    = uk;
     ReturnMessage <object> response = new ServiceNode <EmailConfirmationDTO, object>(_localizer, _fc).PostClient(configParams, "/api/v1/users/confirmuser");
     if (response.IsCatched == 1)
     {
         return(Redirect("/"));
     }
     #endregion
     return(RedirectToAction("Login", "Users"));
 }
示例#2
0
        public IActionResult ConfirmUserForgotPassword([FromBody] EmailConfirmationDTO request)
        {
            #region FunctionBody
            var existedUser = _db.Users.Where(a => a.Token == request.Token).FirstOrDefault();
            if (existedUser is null)
            {
                return(StatusCode(400, new ReturnErrorMessage((int)ErrorTypes.Errors.NotFound)));
            }
            if (existedUser.IsConfirmed == 0)
            {
                return(StatusCode(400, new ReturnErrorMessage((int)ErrorTypes.Errors.NeedConfirmation)));
            }
            return(Ok(new ReturnMessage()));

            #endregion
        }
示例#3
0
        public IActionResult ConfirmUser([FromBody] EmailConfirmationDTO request)
        {
            #region FunctionBody
            var existedUser = _db.Users.Where(a => a.Token == request.Token).FirstOrDefault();

            if (existedUser.Token != request.Token)
            {
                return(StatusCode(400, new ReturnErrorMessage((int)ErrorTypes.Errors.NotFound)));
            }
            if (existedUser.IsConfirmed != 0)
            {
                return(StatusCode(400, new ReturnErrorMessage((int)ErrorTypes.Errors.NotFound)));
            }
            //existedUser.Token = Guid.NewGuid().ToString();
            existedUser.IsConfirmed = 1;
            _db.SaveChanges();
            return(Ok(new ReturnMessage()));

            #endregion
        }
示例#4
0
        public async Task <IActionResult> ConfirmEmail([FromBody] EmailConfirmationDTO emailConfirmation)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    _logger.LogTrace("Email confirmation failed due to missing parameters.", emailConfirmation);
                    return(BadRequest("Confirmation details required."));
                }

                var user = await _unitOfWork.UserManager.FindByIdAsync(emailConfirmation.UserId).ConfigureAwait(false);

                if (user == null)
                {
                    _logger.LogWarning("Email confirmation attempted with bad user ID.");
                    return(StatusCode(500, "Email confirmation unsuccessful."));
                }

                emailConfirmation.Token = Encoding.UTF8.GetString(WebEncoders.Base64UrlDecode(emailConfirmation.Token));
                var result = await _unitOfWork.UserManager.ConfirmEmailAsync(user, emailConfirmation.Token).ConfigureAwait(false);

                if (!result.Succeeded)
                {
                    _logger.LogInformation("Email confirmation failed due to invalid code.");
                    return(BadRequest("Email confirmation failed: validation code invalid."));
                }

                _logger.LogInformation($"Email confirmation succeeded for {user.UserName}.");

                return(NoContent());
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Exception thrown attempting to confirm email.");
                return(StatusCode(500, "Email confirmation unsuccessful."));
            }
        }