public async Task <IActionResult> Restore(Guid id, int revision) { var model = new CommonResult { IsOk = false }; var userUid = id; if (userUid.IsEmptyGuid()) { return(Json(model)); } if (revision < 1) { return(Json(model)); } var request = new UserRestoreRequest(CurrentUser.Id, userUid, revision); var response = await _organizationService.RestoreUser(request); if (response.Status.IsNotSuccess) { model.Messages = response.ErrorMessages; return(Json(model)); } model.IsOk = true; CurrentUser.IsActionSucceed = true; return(Json(model)); }
public async Task <UserRestoreResponse> RestoreUser(UserRestoreRequest request) { var response = new UserRestoreResponse(); var currentUser = _cacheManager.GetCachedCurrentUser(request.CurrentUserId); if (await _organizationRepository.Any(x => x.Id == currentUser.OrganizationId && !x.IsActive)) { response.SetInvalid(); return(response); } var user = await _userRepository.Select(x => x.Uid == request.UserUid); if (user.IsNotExist()) { response.SetInvalid(); response.InfoMessages.Add("user_not_found"); return(response); } var revisions = await _userRepository.SelectRevisions(user.Id); if (revisions.All(x => x.Revision != request.Revision)) { response.SetInvalid(); response.InfoMessages.Add("revision_not_found"); return(response); } var result = await _userRepository.RestoreRevision(request.CurrentUserId, user.Id, request.Revision); if (result) { response.Status = ResponseStatus.Success; return(response); } response.SetFailed(); return(response); }
public async Task <IActionResult> Restore(UserRestoreRequest user) { var result = dbContext.Users.FirstOrDefault(u => u.Email.Equals(user.Email)); if (result != null) { var hash = hashService.GetRandom(); dbContext.PasswordRestores.Add(new PasswordRestore { UserId = result.Id, Restore = hash, Valid = true, }); await dbContext.SaveChangesAsync(); await sender.SendEmailAsync(result.Username, result.Email, $"Someone tries to reset your password on CTOX.\nIf it were you, please follow the link https://localhost:5001/Reset/{hash}"); } ViewData["info-message"] = RestoreInfoMessage; return(View("Login")); }
public static UserRestoreRequest GetUserRestoreRequest() { var request = new UserRestoreRequest(CurrentUserId, UidOne, One); return(request); }