示例#1
0
        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);
        }
示例#3
0
        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);
        }