コード例 #1
0
        public async Task <ActionResult> Login(Login login)
        {
            using (UOSEntities db = new UOSEntities())
            {
                if (Request.IsAuthenticated)
                {
                    return(RedirectToAction("Index", "Home"));
                }

                if (!ModelState.IsValid)
                {
                    return(View(login));
                }
                try
                {
                    var result = await SignInManager.PasswordSignInAsync(login.Email, login.Password, false, shouldLockout : true);

                    switch (result)
                    {
                    case SignInStatus.Success:
                    {
                        var dbUser    = db.AspNetUsers.SingleOrDefault(u => u.UserName == login.Email);
                        var isDisable = dbUser.isDisable;
                        if (isDisable == false)
                        {
                            var claims = UserManager.GetClaims(dbUser.Id);
                            if (claims != null)
                            {
                                foreach (var claim in claims)
                                {
                                    UserManager.RemoveClaim(dbUser.Id, claim);
                                }
                            }
                            var           dbyear = db.BI_Affi_pop_year_for_the_affilation();
                            SessionObject obj    = new SessionObject();
                            foreach (var year in dbyear)
                            {
                                obj.Affiliation_Year       = Convert.ToInt32(year.Year);
                                obj.Id_year_for_affilation = Convert.ToInt32(year.ID);
                                obj.Affiliation_Year       = Convert.ToInt32(year.Year);
                                obj.Id_year_for_affilation = Convert.ToInt32(year.ID);
                            }

                            obj.Institute_Id = dbUser.Institute_ID.ToString();
                            UserManager.AddClaim(dbUser.Id, new Claim("InstituteId", obj.Institute_Id.ToString()));
                            UserManager.AddClaim(dbUser.Id, new Claim("AffiliationYear", obj.Affiliation_Year.ToString()));
                            UserManager.AddClaim(dbUser.Id, new Claim("YearId", obj.Id_year_for_affilation.ToString()));
                            return(RedirectToAction("Login", "Accounts"));
                        }
                        return(View(login));
                    }

                    case SignInStatus.LockedOut:
                    {
                        ViewBag.Account = "Account Is Locked";
                        return(View(login));
                    }

                    case SignInStatus.RequiresVerification:
                    {
                        return(RedirectToAction("SendCode", "Accounts", new { login = login }));
                    }

                    case SignInStatus.Failure:
                    {
                        ViewBag.UserError = "UserName And Password Does Not Match";
                        return(View(login));
                    }

                    default:
                        return(View(login));
                    }
                }
                catch (Exception e)
                {
                    ViewBag.RegisterError = "Error While Logging Your Account Contact Admin Person" + e.Message;
                    return(View(login));
                }
            }
        }