예제 #1
0
        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));
        }
예제 #2
0
        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));
        }
예제 #3
0
        // 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));
        }
예제 #4
0
        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));
        }
예제 #5
0
        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));
        }
예제 #8
0
        // 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));
        }
예제 #9
0
        // 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);
            }
        }
예제 #10
0
 public IActionResult Index()
 {
     UserIndexVM vm = new UserIndexVM(_userManager);
     return View(vm);
 }