Exemple #1
0
        public async Task <Ban> BanUserAsync(UserBanViewModel banViewMode, string adminId)
        {
            var ban = MapBan(banViewMode, adminId);

            using (var connection = new SqlConnection(_msSqlConnectionString))
            {
                ban.BanId = await connection.QuerySingleAsync <int>(
                    $@"INSERT INTO [dbo].[Bans](
                       [BanEnd]
                      ,[BanStart]
                      ,[BannedById]
                      ,[BannedEmail]
                      ,[BannedUserId]
                      ,[FacebookId])
                    VALUES (
                        @{nameof(ban.BanEnd)},
                        @{nameof(ban.BanStart)},
                        @{nameof(ban.BannedById)},
                        @{nameof(ban.BannedEmail)},
                        @{nameof(ban.BannedUserId)},
                        @{nameof(ban.FacebookId)}
                        );SELECT CAST(SCOPE_IDENTITY() as int)"
                    , ban);
            }

            return(ban);
        }
        public ActionResult BanUser(UserBanViewModel userBanViewModel)
        {
            if (userBanViewModel.Id == null)
            {
                this.AddNotification("Invalid user id!", NotificationType.ERROR);
                return(Redirect("/User/List"));
            }

            using (var db = new ApplicationDbContext())
            {
                var ids = db.Users.Select(i => i.Id).ToList();

                if (!ids.Contains(userBanViewModel.Id))
                {
                    this.AddNotification("User not found!", NotificationType.ERROR);
                    return(Redirect("/User/List"));
                }

                var user = db.Users.Find(userBanViewModel.Id);

                // Get data for user to ban from database
                var currBanDate = db.Users.Where(u => u.Id == userBanViewModel.Id).Select(b => b.UserAccessControl.BanEndTime).FirstOrDefault();
                var currUser    = db.Users.Where(u => u.Email == userBanViewModel.UserName).FirstOrDefault();

                if (userBanViewModel.BanEndDate != currBanDate && userBanViewModel.BanEndDate > DateTime.Now)
                {
                    // Save new ban date to user
                    currUser.UserAccessControl.BanEndTime = userBanViewModel.BanEndDate;

                    db.Users.Attach(currUser);
                    var entity = db.Entry(currUser.UserAccessControl);
                    entity.Property(b => b.BanEndTime).IsModified = true;
                    db.SaveChanges();

                    this.AddNotification($"User '{userBanViewModel.FullName}' successfully banned till '{userBanViewModel.BanEndDate.ToLongDateString()} {userBanViewModel.BanEndDate.ToLongTimeString()}'!", NotificationType.INFO);

                    return(Redirect("/User/List"));
                }
                else
                {
                    currUser.UserAccessControl.BanEndTime = userBanViewModel.BanEndDate;

                    db.Users.Attach(currUser);
                    var entity = db.Entry(currUser.UserAccessControl);
                    entity.Property(b => b.BanEndTime).IsModified = true;
                    db.SaveChanges();

                    this.AddNotification($"User '{currUser.FullName}' ban was removed! Select date greater than 'Now' date to ban the user!", NotificationType.WARNING);

                    return(Redirect("/User/List"));
                }
            }
        }
Exemple #3
0
 private static Ban MapBan(UserBanViewModel banViewModel, string adminId)
 {
     return(new Ban
     {
         BannedById = adminId,
         BanStart = DateTime.Now,
         BannedEmail = banViewModel.BannedEmail,
         BannedUserId = banViewModel.BannedUserId,
         FacebookId = banViewModel.FacebookId,
         BanEnd = !banViewModel.IsPermanentBan
             ? DateTime.Now.AddDays(banViewModel.BanWeeksDuration * 7)
             : DateTime.MaxValue
     });
 }
        public async Task <IActionResult> Ban(UserBanViewModel input)
        {
            var user = await this.userManager.FindByIdAsync(input.Id);

            if (user == null)
            {
                return(this.NotFound());
            }

            var dateTimeOffset = new DateTimeOffset(DateTime.UtcNow);
            var banLength      = dateTimeOffset.AddDays(30);

            await this.userManager.SetLockoutEndDateAsync(user, banLength);

            this.TempData["InfoMessage"] = "User banned successfully!";
            return(this.RedirectToAction(nameof(this.Banned)));
        }
        public async Task <IActionResult> BanUser([FromBody] UserBanViewModel banViewModel)
        {
            var callerId = GetCallerId();

            if (string.IsNullOrEmpty(callerId))
            {
                return(new BadRequestObjectResult(new
                {
                    Message = "You cannot ban this user"
                }));
            }
            var result = await _userManagementRepository.BanUserAsync(banViewModel, callerId);

            return(new OkObjectResult(new
            {
                Message = "User banned succesfully",
                result
            }));
        }
        // Get User/BanUser
        public ActionResult BanUser(string id)
        {
            if (id == null)
            {
                this.AddNotification("No id specified!", NotificationType.ERROR);
                return(Redirect("/User/List"));
            }

            using (var db = new ApplicationDbContext())
            {
                var user = db.Users.Find(id);

                if (user == null)
                {
                    this.AddNotification("Invalid user id!", NotificationType.ERROR);
                    return(Redirect("/User/List"));
                }

                var viewModel = new UserBanViewModel();
                viewModel.Id                 = id;
                viewModel.UserName           = db.Users.Where(u => u.Id == id).Select(u => u.UserName).FirstOrDefault();
                viewModel.FullName           = db.Users.Where(u => u.Id == id).Select(u => u.FullName).FirstOrDefault();
                viewModel.UploadedSongsCount = user.UploadedSongs.Count;
                viewModel.PlaylistCount      = user.Playlists.Count;
                viewModel.BanEndDate         = user.UserAccessControl.BanEndTime;

                this.AddNotification("Select end date of ban.", NotificationType.INFO);
                this.AddNotification("To enable user set the ban date to 'Now'.", NotificationType.INFO);

                var userManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(db));
                var userRoles   = string.Join(", ", userManager.GetRoles(id));

                if (userRoles.Contains("Admin"))
                {
                    this.AddNotification("Selected user is 'Admin'", NotificationType.WARNING);
                }

                return(View(viewModel));
            }
        }