public async Task<IActionResult> AssignRole(UserAssignRoleVM model) { if (ModelState.IsValid) { bool success; if (model.User == null) { IdentityUser user = await _userManager.FindByIdAsync(model.UserId); success = await ReplaceRole(user, model.SelectedRole); } else { success = await ReplaceRole(model.User, model.SelectedRole); } if (success == false) { ViewBag.ErrorMessage = "There must always be at least one admin."; // TODO: replace ViewBag.ErrorMessage with UserIndexVM errormessages. UserIndexVM vm = new UserIndexVM(_userManager); return View(nameof(Index), vm); } } return RedirectToAction(nameof(Index)); }
public ActionResult Index(string sortOrder, string currentFilter, string searchString, int?page) { // Impmenting sort functionality to the index page, referenced from user repo UserIndexVM model = _userRepo.GetAllUsers(sortOrder, currentFilter, searchString, page); return(View(model)); }
// GET: Account //[Authorize(Roles ="Admin")] public ActionResult Index(int page = 1, int pageSize = 2) { var result = new PagedResult <ApplicationUser>(); result.CurrentPage = page; result.PageSize = pageSize; result.RowCount = UserManager.Users.Count(); var pageCount = (double)result.RowCount / pageSize; result.PageCount = (int)Math.Ceiling(pageCount); var skip = (page - 1) * pageSize; result.Results = UserManager.Users.OrderBy(c => c.Email) .Skip(skip).Take(pageSize) .Include(c => c.Roles).AsNoTracking().ToList(); var roles = RoleManager.Roles.Include(r => r.Users).ToList(); var userIndexVm = new UserIndexVM() { Users = result, Roles = roles }; return(View(userIndexVm)); }
public ActionResult Index(UserIndexVM userIdexVM) { UserService _userService = new UserService(); List <User> users = _userService.FindUsers(userIdexVM.UserAccount, userIdexVM.UserName); userIdexVM.Users = users.OrderBy(p => p.UserAccount).ToPagedList(userIdexVM.Page > 0 ? userIdexVM.Page - 1 : 0, PageSize); return(View(userIdexVM)); }
public IActionResult Index() { var loggedInUserName = this.GetLoggedInUserName(); var model = new UserIndexVM { UserName = loggedInUserName }; return(View(model)); }
public IActionResult Index(UserIndexVM model) { if (!User.IsInRole("Admin")) { return(RedirectToAction("Index", "LoggedUser")); } model.Filter = model.Filter ?? new UserFilterVM(); Expression <Func <User, bool> > filter = model.Filter.GenerateFilter(); model.Items = userService.GetAll(filter).ToList(); return(View(model ?? new UserIndexVM())); }
public ActionResult Users() { var userIndexVM = new UserIndexVM(); var users = db.Users.ToList(); foreach (var user in users) { userIndexVM.Users.Add(new UserInfoVM { UserId = user.Id, FullName = user.FullName, RoleName = rolesHelper.ListUserRoles(user.Id).FirstOrDefault(), Email = user.Email, NumberOfTickets = user.Projects.SelectMany(t => t.Tickets).Count() }); } return(View(userIndexVM)); }
// Delete request (adding HttpDelete gives 405 error) public async Task<IActionResult> RemoveRoles(string userId) { if (ModelState.IsValid) { IdentityUser user = await _userManager.FindByIdAsync(userId); var roles = await _userManager.GetRolesAsync(user); bool isAdmin = roles.Contains("Admin"); if (isAdmin && _roleManager.Roles.Count(role => role.Name == "Admin") <= 1) { _logger.LogWarning("Someone attemped to remove all roles from the last admin."); // TODO: replace ViewBag.ErrorMessage with UserIndexVM errormessages. ViewBag.ErrorMessage = "There must always be at least one admin."; UserIndexVM vm = new UserIndexVM(_userManager); return View(nameof(Index), vm); } await _userManager.RemoveFromRolesAsync(user, roles); _logger.LogInformation($"{user.UserName} no longer has any roles."); } return RedirectToAction(nameof(Index)); }
// User Controller Index Page // Get the users and sort them public UserIndexVM GetAllUsers(string sortOrder, string currentFilter, string searchString, int?page) { // get the role manager to find user's role and populate the index page var roleManager = new RoleManager <ApplicationRole>(new RoleStore <ApplicationRole>(_context)); // get the current logged in user's id var currentUserId = HttpContext.Current.User.Identity.GetUserId(); // get the current logged in user's client id var getClientId = _context.UserDetail.Where(u => u.UserID == currentUserId).Select(c => c.Client.ClientName).FirstOrDefault(); try { // store the user information in list by using userVM view model IEnumerable <UserVM> users = _context.Users.Select(user => new UserVM() { ReferenceID = user.UserDetail.ReferenceID, Email = user.Email, // get the role id associated to the user RoleName = user.Roles.FirstOrDefault().RoleId.ToString(), FirstName = user.UserDetail.FirstName, LastName = user.UserDetail.LastName, BusinessTitle = user.UserDetail.BusinessTitle, BusinessPhone = user.UserDetail.BusinessPhone, MobilePhone = user.UserDetail.MobilePhone, HomePhone = user.UserDetail.HomePhone, ClientReferenceID = user.UserDetail.Client.ReferenceID, ClientName = user.UserDetail.Client.ClientName, StatusID = user.UserDetail.Status.StatusID, StatusName = user.UserDetail.Status.StatusName // order the list by status }).OrderByDescending(s => s.StatusID).ToList(); // loop the users list and find the role name associated with the id and assign it to RoleName foreach (var user in users) { user.RoleName = roleManager.FindById(user.RoleName).Name.ToString(); } // If current logged in user is staff, do not show admin and staff users if (HttpContext.Current.User.IsInRole(Key.ROLE_STAFF)) { users = users.Where(a => a.RoleName != Key.ROLE_ADMIN && a.RoleName != Key.ROLE_STAFF); } // If current logged in user is client, do not show admin, staff and other clients including itself and where clientname matches itself if (HttpContext.Current.User.IsInRole(Key.ROLE_CLIENT)) { users = users.Where(u => u.RoleName != Key.ROLE_ADMIN && u.RoleName != Key.ROLE_STAFF && u.RoleName != Key.ROLE_CLIENT && u.ClientName == getClientId); } // initilize the sorting, searching and filtering options page = searchString == null ? page : 1; int currentPageIndex = page.HasValue ? page.Value - 1 : 0; searchString = searchString ?? currentFilter; int pageNumber = (page ?? 1); int defaultPageSize = ConstantsRepo.PAGE_SIZE; var sorted = Sort(users, sortOrder, searchString); // get the current users in the database count int totalNumOfUsers = sorted.Count(); // sort by status name by default sortOrder = sortOrder ?? ConstantsRepo.SORT_STATUS_BY_NAME_DESC; // store the users information info ipagedlist userindexvm viewmodel and sort it UserIndexVM model = new UserIndexVM { Users = sorted.ToPagedList(pageNumber, defaultPageSize), CurrentFilter = searchString, CurrentSort = sortOrder, TotalItemCount = totalNumOfUsers, ItemStart = currentPageIndex * defaultPageSize + 1, ItemEnd = totalNumOfUsers - (defaultPageSize * currentPageIndex) >= defaultPageSize ? defaultPageSize * (currentPageIndex + 1) : totalNumOfUsers, // get the properties from the viewmodel and assign the sorting parameters to them RoleNameSort = sortOrder == ConstantsRepo.SORT_ROLE_NAME_BY_DESC ? ConstantsRepo.SORT_ROLE_NAME_BY_ASCE : ConstantsRepo.SORT_ROLE_NAME_BY_DESC, EmailSort = sortOrder == ConstantsRepo.SORT_EMAIL_BY_DESC ? ConstantsRepo.SORT_EMAIL_BY_ASCE : ConstantsRepo.SORT_EMAIL_BY_DESC, ClientHeadingSort = sortOrder == ConstantsRepo.SORT_CLIENT_BY_NAME_DESC ? ConstantsRepo.SORT_CLIENT_BY_NAME_ASCE : ConstantsRepo.SORT_CLIENT_BY_NAME_DESC, FirstNameSort = sortOrder == ConstantsRepo.SORT_FIRST_NAME_BY_DESC ? ConstantsRepo.SORT_FIRST_NAME_BY_ASCE : ConstantsRepo.SORT_FIRST_NAME_BY_DESC, LastNameSort = sortOrder == ConstantsRepo.SORT_LAST_NAME_BY_DESC ? ConstantsRepo.SORT_LAST_NAME_BY_ASCE : ConstantsRepo.SORT_LAST_NAME_BY_DESC, StatusSort = sortOrder == ConstantsRepo.SORT_STATUS_BY_NAME_DESC ? ConstantsRepo.SORT_STATUS_BY_NAME_ASCE : ConstantsRepo.SORT_STATUS_BY_NAME_DESC, }; return(model); } // if users list has no users return null, which will display no users in the index view catch (Exception e) { if (e is SqlException) { } return(null); } }
public IActionResult Index() { UserIndexVM vm = new UserIndexVM(_userManager); return View(vm); }