Пример #1
0
        public async Task <IWriterResult> ResetAllTwoFactor(string userId, AdminResetTwoFactorModel model)
        {
            using (var context = DataContextFactory.CreateContext())
            {
                var user = await context.Users.FirstOrDefaultNoLockAsync(x => x.UserName == model.UserName);

                if (user == null)
                {
                    return(new WriterResult(false, $"User '{model.UserName}' not found"));
                }

                var approval = await context.ApprovalQueue.FirstOrDefaultNoLockAsync(x => x.DataUserId == user.Id && x.Type == Enums.ApprovalQueueType.ResetAllTwoFactor && x.Status == Enums.ApprovalQueueStatus.Pending);

                if (approval != null)
                {
                    return(new WriterResult(false, "Already awaiting approval."));
                }

                approval = new Entity.ApprovalQueue
                {
                    DataUserId    = user.Id,
                    RequestUserId = userId,
                    Type          = Enums.ApprovalQueueType.ResetAllTwoFactor,
                    Status        = Enums.ApprovalQueueStatus.Pending,
                    Created       = DateTime.UtcNow,
                    Data          = model.Type
                };

                context.ApprovalQueue.Add(approval);
                await context.SaveChangesAsync();

                return(new WriterResult(true, $"Reset Two Factor for user {user.UserName} added to Approval Queue"));
            }
        }
Пример #2
0
        public async Task <ActionResult> ResetAllTwoFactor(AdminResetTwoFactorModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("ResetTwoFactorModal", model));
            }

            var result = await AdminUserWriter.ResetAllTwoFactor(User.Identity.GetUserId(), model);

            if (!ModelState.IsWriterResultValid(result))
            {
                return(View("ResetTwoFactorModal", model));
            }

            return(CloseModalSuccess(result.Message));
        }