Exemple #1
0
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            // Require the user to have a confirmed email before they can log on.
            var user = await UserManager.FindByNameAsync(model.Email);

            var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout : false);

            if (user != null)
            {
                if (!await UserManager.IsEmailConfirmedAsync(user.Id))
                {
                    ViewBag.errorMessage = "You must have a confirmed email to log on.";
                    return(View("Error"));
                }
                if (UserManager.IsInRole(user.Id, "Employer"))
                {
                    DB66Entities db     = new DB66Entities();
                    var          people = db.People;
                    if (people.Any(p => p.User_AccountID == user.Id))
                    {
                        return(RedirectToAction("MyJobs", "Employer"));
                    }
                    else
                    {
                        return(RedirectToAction("AddInformation", "Employer"));
                    }
                }
                if (UserManager.IsInRole(user.Id, "Freelancer"))
                {
                    DB66Entities db     = new DB66Entities();
                    var          people = db.People;
                    if (people.Any(p => p.User_AccountID == user.Id))
                    {
                        return(RedirectToAction("ManageJobs", "Freelancers"));
                    }
                    else
                    {
                        return(RedirectToAction("AddInfo", "Freelancers"));
                    }
                }
                if (UserManager.IsInRole(user.Id, "Admin"))
                {
                    return(RedirectToAction("ApprovalRequests", "Admin"));
                }
            }

            // This doesn't count login failures towards account lockout
            // To enable password failures to trigger account lockout, change to shouldLockout: true

            switch (result)
            {
            case SignInStatus.Success:
                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));
            }
        }