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")); }
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 }
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 }
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.")); } }