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