Beispiel #1
0
        public ActionResult Create()
        {
            CheckCookies();
            Ticket model = new Ticket();
            model.DueDate = DateTimeOffset.UtcNow.AddDays(10);
            model.HoursToComplete = 1;
            UserRolesHelper helper = new UserRolesHelper();
            var id = User.Identity.GetUserId();
            var roles = helper.ListUserRoles(id);
            var highest = helper.GetHighestRole(id);
            ViewBag.HighestUserRole = highest;

            // Do this in every GET action...
            var uModel = ProjectsHelper.LoadUserModel();
            ViewBag.UserModel = uModel;

            // If user is Submitter only (or has no role), don't allow Skill, Due Date, or HoursToComplete to show
            ViewBag.BaseOptionsOnly = (roles == null || ((roles.Count == 1) && (roles[0] == R.Submitter))) ? true : false;

            // If Admin, allow to select Developer when creating the ticket
            if (uModel.IsAdmin || uModel.IsPM)
            {
                var roleDev = db.Roles.FirstOrDefault(r => r.Name == R.Developer);
                ViewBag.CanAssignDeveloper = true;
                if (roleDev != null)
                {
                    ViewBag.AssignedToDevId =
                        new SelectList(db.Users
                            .Where(d => d.Roles.FirstOrDefault(r => r.RoleId == roleDev.Id) != null), "Id", "UserName");
                }
                else ViewBag.AssignedToDevId = Enumerable.Empty<SelectListItem>();
            }
            else
            {
                ViewBag.AssignedToDevId = Enumerable.Empty<SelectListItem>();
                ViewBag.CanAssignDeveloper = false;
            }

            ViewBag.OwnerUserId = new SelectList(db.Users, "Id", "FirstName");
            ViewBag.ProjectId = new SelectList(db.Projects, "Id", "Name");
            ViewBag.SkillRequiredId = new SelectList(db.SkillLevels, "Id", "Name");
            ViewBag.TicketPriorityId = new SelectList(db.TicketPriorities, "Id", "Name");
            ViewBag.TicketStatusId = new SelectList(db.TicketStatuses, "Id", "Name");
            ViewBag.TicketTypeId = new SelectList(db.TicketTypes, "Id", "Name");
            return View(model);
        }
Beispiel #2
0
        public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return View(model);
            }

            // This doesn't count login failures towards account lockout
            // To enable password failures to trigger account lockout, change to shouldLockout: true
            var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
            //
            // IMPORTANT NOTE: The first parameter above (model.Email) is really the UserName... the PasswordSignInAsync function
            // expects the UserName here, and NOT the email.  So don't try to match up the email in the code below or it will fail!
            switch (result)
            {
                case SignInStatus.Success:
                    // If user has multiple roles, ask which one should become the active one
                    ApplicationDbContext db = new ApplicationDbContext();
                    var user = db.Users.FirstOrDefault(u => u.UserName == model.Email); // See IMPORTANT NOTE above! (this is really UserName)
                    UserRolesHelper helper = new UserRolesHelper();
                    var userRoles = helper.ListUserRoles(user.Id);
                    string role = "";
                    switch (userRoles.Count()) {
                        case 0:
                            user.ActiveRole = R.NewUser;
                            break;
                        case 1:
                            user.ActiveRole = userRoles[0];
                            break;
                        default:
                            // More than one role, so show modal to allow user to select the login role
                            // But first, set the highest role as the active one...
                            user.ActiveRole = helper.GetHighestRole(user.Id);
                            db.Entry(user).State = EntityState.Modified;
                            db.SaveChanges();

                            // Now send the roles (concatenated)...
                            for (int i = 0; i < userRoles.Count; i++)
                                role += "-" + userRoles[i];
                            return RedirectToAction("Index", "Home", new { myRoles = role });
                    }
                    // For just one role, finish up here
                    db.Entry(user).State = EntityState.Modified;
                    db.SaveChanges();
                    if (returnUrl == null)
                        return RedirectToAction("Dashboard", "Home");
                    return RedirectToLocal(returnUrl);
                case SignInStatus.LockedOut:
                    return View("Lockout");
                case SignInStatus.RequiresVerification:
                    return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
                case SignInStatus.Failure:
                default:
                    ModelState.AddModelError("", "Invalid login attempt.");
                    return View(model);
            }
        }
Beispiel #3
0
        // GET: Tickets/Edit/5
        public ActionResult Edit(int? id)
        {
            CheckCookies();
            // Do this in every GET action...
            var uModel = ProjectsHelper.LoadUserModel();
            ViewBag.UserModel = uModel;

            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Ticket ticket = db.Tickets.Find(id);
            if (ticket == null)
            {
                return HttpNotFound();
            }

            UserRolesHelper helper = new UserRolesHelper();
            var userId = helper.GetCurrentUserId();
            var roles = helper.ListUserRoles(userId);

            // If Admin, allow to select Developer when creating the ticket
            if (uModel.IsAdmin || uModel.IsPM)
            {
                var roleDev = db.Roles.FirstOrDefault(r => r.Name == R.Developer);
                ViewBag.CanAssignDeveloper = true;
                if (roleDev != null)
                {
                    var dev =
                        new SelectList(db.Users
                            .Where(d => d.Roles.Any(r => r.RoleId == roleDev.Id)), "Id", "UserName",
                            ticket.AssignedToDevId);
                    ViewBag.AssignedToDevId = dev;
                }
                else ViewBag.AssignedToDevId = Enumerable.Empty<SelectListItem>();
            }
            else
            {
                ViewBag.AssignedToDevId = Enumerable.Empty<SelectListItem>();
                ViewBag.CanAssignDeveloper = false;
            }

            ViewBag.OwnerUserId = new SelectList(db.Users, "Id", "FirstName", ticket.OwnerUserId);
            ViewBag.ProjectId = new SelectList(db.Projects, "Id", "Name", ticket.ProjectId);
            ViewBag.SkillRequiredId = new SelectList(db.SkillLevels, "Id", "Name", ticket.SkillRequiredId);
            ViewBag.TicketPriorityId = new SelectList(db.TicketPriorities, "Id", "Name", ticket.TicketPriorityId);
            ViewBag.TicketStatusId = new SelectList(db.TicketStatuses, "Id", "Name", ticket.TicketStatusId);
            ViewBag.TicketTypeId = new SelectList(db.TicketTypes, "Id", "Name", ticket.TicketTypeId);
            return View(ticket);
        }
Beispiel #4
0
        public ActionResult ManageUsers()
        {
            ViewBag.Message = "Manage users.";
            UserRolesHelper helper = new UserRolesHelper();

            // Create list of all roles
            List<string> roles = db.Roles.Select(r => r.Name).ToList();

            // We don't need Guest or NewUser, so remove them
            roles.Remove(R.Guest);
            roles.Remove(R.NewUser);
            int nRoles = roles.Count;

            // Create list of users
            List<ManageUsersData> users = db.Users
                .Where(u => u.UserName != R.GuestUserName)
                .Select(u => new ManageUsersData()
                    {
                        Id = u.Id,
                        UserName = u.UserName,
                        Email = u.Email,
                        DisplayName = u.DisplayName,
                        First = u.FirstName,
                        Last = u.LastName
                    })
                .ToList();

            // And for each user, create list of roles and generate
            foreach (var user in users)
            {
                user.OrigRoles = new bool[nRoles];
                user.NewRoles = new bool[nRoles];

                var userRoles = helper.ListUserRoles(user.Id);
                for (var i = 0; i < nRoles; i++)
                    user.OrigRoles[i] = user.NewRoles[i] = userRoles.Contains(roles[i]);
            }

            // Now for each user, get list of roles and create origRoles data
            ViewBag.UsersAndRoles = users;
            ViewBag.Roles = roles;
            // Do this in every GET action...
            ViewBag.UserModel = ProjectsHelper.LoadUserModel();
            return View(new ManageUsersModel(users, roles));
        }