예제 #1
0
        //[Route("~/[controller]/[action]")]
        public async Task <IActionResult> SignIn(AccountSignInViewModel model, string ReturnUrl)
        {
            if (this._signInManager.IsSignedIn(User))
            {
                return(RedirectToAction("Index", "Home"));
            }

            model.ExternalLogins = new ExternalLoginsViewModel()
            {
                ExternalLogins = (await this._signInManager.GetExternalAuthenticationSchemesAsync()).ToList()
            };

            if (ModelState.IsValid)
            {
                // Change The Last Parametr To Activate The AccountLock After A specific Tries.
                var result = await this._signInManager.PasswordSignInAsync(model.Email, model.Password, model.Remembre, false);

                if (result.Succeeded)
                {
                    if (!String.IsNullOrEmpty(ReturnUrl) && Url.IsLocalUrl(ReturnUrl))
                    {
                        // Will return the user to any URL.
                        return(Redirect(ReturnUrl));
                    }
                    else
                    {
                        return(RedirectToAction("Index", "Home"));
                    }
                }

                ModelState.AddModelError(string.Empty, "Email or Password Incorrect!!");
            }
            return(View(model));
        }
예제 #2
0
        public async Task <ActionResult> SignIn(AccountSignInViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                var result = await _signInManager.PasswordSignInAsync(viewModel.Email, viewModel.Password, viewModel.RememberMe, shouldLockout : false);

                switch (result)
                {
                case SignInStatus.Success:
                {
                    return(RedirectToAction("Index", "Entries"));
                }

                case SignInStatus.Failure:
                {
                    ModelState.AddModelError("", "Invalid email or password!");
                    break;
                }

                case SignInStatus.LockedOut:
                {
                    throw new NotImplementedException();
                }

                default:
                {
                    throw new ApplicationException("Unexpected Microsoft.AspNet.Identity.Owin.SignInStatus enum value: " + result);
                }
                }
            }

            return(View(viewModel));
        }
예제 #3
0
        public async Task <ActionResult> SignIn(AccountSignInViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(View(viewModel));
            }

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

            switch (result)
            {
            case SignInStatus.Success:
                return(RedirectToAction("Index", "Member"));

            case SignInStatus.Failure:
                ModelState.AddModelError("", "Invalid login attempt.");
                return(View(viewModel));

            case SignInStatus.LockedOut:
            case SignInStatus.RequiresVerification:
                throw new NotImplementedException("Identity feature not implemented.");

            default:
                throw new Exception("Unexpected Microsoft.AspNet.Identity.Owin.SignInStatus enum value: " + result);
            }
        }
        public async Task <IActionResult> SignIn(AccountSignInViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

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

            if (result.Succeeded)
            {
                Logger.LogInformation("User signed in.");

                return(RedirectToAction("Index", "Home"));
            }
            //if (result.RequiresTwoFactor)
            //{
            //    return RedirectToPage("./LoginWith2fa", new { ReturnUrl = returnUrl, RememberMe = Input.RememberMe });
            //}
            if (result.IsLockedOut)
            {
                Logger.LogWarning("User account locked out.");
                //return RedirectToPage("./Lockout");

                return(RedirectToAction("Index", "Home"));
            }
            else
            {
                ModelState.AddModelError(string.Empty, "Invalid login attempt.");
                return(View(model));
            }
        }
        public async Task SignInHttpPostValidViewModelTest()
        {
            var mockIUserStore             = new Mock <IUserStore <User> >();
            var mockIAuthenticationManager = new Mock <IAuthenticationManager>();
            var mockApplicationUserManager = new Mock <ApplicationUserManager>(mockIUserStore.Object);

            var mockApplicationSignInManager = new Mock <ApplicationSignInManager>(mockApplicationUserManager.Object, mockIAuthenticationManager.Object);

            mockApplicationSignInManager.Setup(x => x.PasswordSignInAsync(It.IsAny <string>(),
                                                                          It.IsAny <string>(),
                                                                          It.IsAny <bool>(),
                                                                          It.IsAny <bool>()))
            .ReturnsAsync(SignInStatus.Success);

            _accountController = new AccountController(mockApplicationUserManager.Object, mockApplicationSignInManager.Object, mockIAuthenticationManager.Object);

            var viewModel = new AccountSignInViewModel()
            {
                Email      = "",
                Password   = "",
                RememberMe = false
            };

            var result = await _accountController.SignIn(viewModel) as RedirectToRouteResult;

            Assert.AreEqual("Index", (string)result?.RouteValues["action"]);
        }
예제 #6
0
        //[Route("~/[controller]/[action]")]
        public async Task <IActionResult> SignIn(string returnUrl)
        {
            var model = new AccountSignInViewModel();

            model.ExternalLogins.ExternalLogins = (await this._signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
            model.ExternalLogins.ReturnUrl      = returnUrl;

            return(View(model));
        }
예제 #7
0
        public async Task <ActionResult> SignIn(AccountSignInViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }

            return(await SignInUser(viewModel, viewModel.RememberMe));
        }
예제 #8
0
        public ActionResult SignIn(AccountSignInViewModel vm)
        {
            if (!ModelState.IsValid)
            {
                return(Content("Coś poszło nie tak..."));
            }

            var userSignInRequestModel = _mapper.Map <AccountSignInViewModel, UserSignInRequestModel>(vm);

            if (!_userService.SignIn(userSignInRequestModel))
            {
                return(View("ActivateAccount"));
            }

            SetSignedInUser(vm.Username);
            return(RedirectToAction("Index", "Home"));
        }
예제 #9
0
        public IActionResult SignIn(AccountSignInViewModel accountSignInViewModel)
        {
            var result   = _client.GetStringAsync("api/accounts").Result;
            var accounts = JsonConvert.DeserializeObject <List <AccountSignInViewModel> >(result);
            var account  = accounts.FirstOrDefault(a => a.Login == accountSignInViewModel.Login);

            if (account == null)
            {
                return(Redirect("/site/vertical/pages-login.html"));
            }

            if (_encrypter.ValidatePassword(accountSignInViewModel.Password, account.Password))
            {
                return(Redirect("/site/vertical/table-company.html"));
            }

            return(Redirect("/site/vertical/pages-login.html"));
        }
        public async Task SignInHttpPostInvalidViewModelTest()
        {
            using (var mock = AutoMock.GetLoose())
            {
                var viewModel = new AccountSignInViewModel()
                {
                    Email      = "",
                    Password   = "",
                    RememberMe = false
                };

                _accountController = mock.Create <AccountController>();
                _accountController.ModelState.AddModelError("key", "error message");

                var result = await _accountController.SignIn(viewModel);

                Assert.IsInstanceOf <ViewResult>(result);
            }
        }
        public async Task <IActionResult> SignIn(AccountSignInViewModel vm, string ReturnUrl)
        {
            if (ModelState.IsValid)
            {
                var result = await this._signInManager.PasswordSignInAsync(vm.Email, vm.Password, false, false);

                if (result.Succeeded)
                {
                    if (!string.IsNullOrEmpty(ReturnUrl) && Url.IsLocalUrl(ReturnUrl))
                    {
                        return(Redirect(ReturnUrl));
                    }

                    return(RedirectToAction("Index", "Home"));
                }
                ModelState.AddModelError(string.Empty, "Invalid Login Attempt");
            }

            return(View(vm));
        }
예제 #12
0
        /// <summary>
        /// Performs authentication for the application.
        /// </summary>
        /// <param name="vm">Sign in view model instance that contains the user's login information.</param>
        /// <returns>Login reponse with authorization details.</returns>
        internal async Task <UserResponse> AuthenticateAsync(AccountSignInViewModel vm, CancellationToken ct)
        {
            var response = new UserResponse()
            {
                AccessToken = "1234567890", RefreshToken = "abcdefghijklmnop", UserID = vm.Username, Email = vm.Username, FirstName = "John", LastName = "Doe"
            };
            await Task.Delay(2000, ct);

            return(response);

            //this.Client.DefaultRequestHeaders.Add("Authorization", "Basic YzExNGEzM2U4YjNhNDdmY2E3NzBhYmJiMGNlOWE0YjE6NDFjOTcxYTU3NzlhNGZhMGI4NGZmN2EzNTA4NTQ5M2U=");

            //var dic = new Dictionary<string, string>();
            //dic.Add("grant_type", "password");
            //dic.Add("username", vm.Username);
            //dic.Add("password", vm.Password);
            //dic.Add("scope", "streaming");
            //var contents = new System.Net.Http.FormUrlEncodedContent(dic);

            //return await this.PostAsync<UserResponse>(URL_ACCOUNT_SIGNIN, contents, ct);
        }
        public ActionResult SignIn(AccountSignInViewModel model, string returnUrl = null, int?errorMessage = null)
        {
            if (!ModelState.IsValid)
            {
                return(View(new AccountSignInViewModel(
                                source: model,
                                returnUrl: returnUrl,
                                displayCaptcha: CaptchaSettings.CaptchaIsConfigured() && CaptchaSettings.RequireCaptchaOnLogin,
                                passwordResetAvailable: ControllerHelper.IsPasswordResetAvailable())));
            }

            var signedInCustomer = HttpContext.GetCustomer();

            if (CaptchaSettings.CaptchaIsConfigured() &&
                CaptchaSettings.RequireCaptchaOnLogin)
            {
                var captchaResult = CaptchaVerificationProvider.ValidateCaptchaResponse(Request.Form[CaptchaVerificationProvider.RecaptchaFormKey], signedInCustomer.LastIPAddress);

                if (!captchaResult.Success)
                {
                    NoticeProvider.PushNotice(captchaResult.Error.Message, NoticeType.Failure);

                    return(View(new AccountSignInViewModel(
                                    source: model,
                                    returnUrl: returnUrl,
                                    displayCaptcha: CaptchaSettings.CaptchaIsConfigured() && CaptchaSettings.RequireCaptchaOnLogin,
                                    passwordResetAvailable: ControllerHelper.IsPasswordResetAvailable())));
                }
            }

            // Login
            var result = ControllerHelper.Login(
                signedInCustomer: signedInCustomer,
                profile: HttpContext.Profile,
                username: model.Email,
                password: model.Password,
                skinId: signedInCustomer.SkinID);

            if (result.State == AccountControllerHelper.ResultState.Error)
            {
                NoticeProvider.PushNotice(result.Message, NoticeType.Failure);

                return(View(new AccountSignInViewModel(
                                source: model,
                                returnUrl: returnUrl,
                                displayCaptcha: CaptchaSettings.CaptchaIsConfigured() && CaptchaSettings.RequireCaptchaOnLogin,
                                passwordResetAvailable: ControllerHelper.IsPasswordResetAvailable())));
            }
            else if (result.State == AccountControllerHelper.ResultState.PasswordChangeRequired)
            {
                NoticeProvider.PushNotice(result.Message, NoticeType.Info);
                return(RedirectToAction(
                           actionName: ActionNames.ChangePassword,
                           routeValues: new
                {
                    email = model.Email,
                    returnUrl = returnUrl
                }));
            }

            var targetCustomer = new Customer(model.Email);
            var identity       = ClaimsIdentityProvider.Create(targetCustomer);

            Request
            .GetOwinContext()
            .Authentication
            .SignIn(
                properties: new Microsoft.Owin.Security.AuthenticationProperties
            {
                IsPersistent = model.PersistLogin
            },
                identities: identity);

            if (!string.IsNullOrEmpty(result.Message))
            {
                NoticeProvider.PushNotice(result.Message, NoticeType.Info);
            }

            // Consolidate any shopping cart items
            CartActionProvider.ConsolidateCartItems(targetCustomer, CartTypeEnum.ShoppingCart);
            CartActionProvider.ConsolidateCartItems(targetCustomer, CartTypeEnum.WishCart);

            var safeReturnUrl = Url.MakeSafeReturnUrl(returnUrl);

            return(Redirect(safeReturnUrl));
        }
예제 #14
0
        public async Task <ActionResult> frmUserSignIn(AccountSignInViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(View(viewModel));
            }

            //Sign-In the user
            var result = await _signInManager.PasswordSignInAsync(viewModel.Username, viewModel.Password, viewModel.RememberMe, shouldLockout : false);

            //Check the Result
            switch (result)
            {
            case SignInStatus.Success:
                return(RedirectToAction("Index", "Home"));

            case SignInStatus.Failure:
                ModelState.AddModelError("", "Invalid login attempt.");

                try
                {
                    MailMessage mail = new MailMessage();
                    //Change who you want to send the email to
                    mail.To.Add("Email sent to");
                    //Change who you want to send the email from
                    mail.From    = new MailAddress("Email sent from");
                    mail.Subject = "Requesting Information";

                    string userMessage = "";
                    userMessage = "<br/>Name: " + viewModel.Username;
                    string Body = "Hi, <br/><br/> Unknown User Login:<br/><br/> " + userMessage + "<br/><br/>Thanks";

                    mail.Body       = Body;
                    mail.IsBodyHtml = true;

                    SmtpClient smtp = new SmtpClient();
                    //SMTP Server Address of gmail
                    smtp.Host = "smtp.gmail.com";
                    smtp.Port = 587;
                    //Add in email credentials
                    smtp.Credentials = new NetworkCredential("email username", "email password");
                    // Smtp Email ID and Password For authentication
                    smtp.EnableSsl = true;
                    smtp.Send(mail);
                    ViewBag.Message = "Thank you for your time.";
                }
                catch
                {
                    ViewBag.Message = "Error............";
                }

                return(View(viewModel));

            case SignInStatus.LockedOut:
            case SignInStatus.RequiresVerification:
                throw new NotImplementedException("identity feature not implemented.");

            default:
                throw new Exception("Unexpected Microsoft.AspNet.Identity.Owin.SignInStatus enum value: " + result);
            }
        }
예제 #15
0
        public ActionResult SignIn(AccountSignInViewModel model, string returnUrl = null, int?errorMessage = null)
        {
            if (!ModelState.IsValid)
            {
                return(View(new AccountSignInViewModel(
                                source: model,
                                captchaCode: string.Empty,
                                returnUrl: returnUrl,
                                displayCaptcha: Settings.RequireCaptchaOnLogin,
                                passwordResetAvailable: ControllerHelper.IsPasswordResetAvailable())));
            }

            var signedInCustomer = HttpContext.GetCustomer();

            if (Settings.RequireCaptchaOnLogin &&
                !ControllerHelper.IsCaptchaValid(
                    requiredSecurityCode: CaptchaStorageService.RetrieveSecurityCode(HttpContext, string.Concat(ControllerNames.Account, ActionNames.SignIn)),
                    securityCode: model.CaptchaCode))
            {
                CaptchaStorageService.ClearSecurityCode(HttpContext);

                ModelState.AddModelError(
                    key: "CaptchaCode",
                    errorMessage: "The letters you entered did not match, please try again.");


                return(View(new AccountSignInViewModel(
                                source: model,
                                captchaCode: string.Empty,
                                returnUrl: returnUrl,
                                displayCaptcha: Settings.RequireCaptchaOnLogin,
                                passwordResetAvailable: ControllerHelper.IsPasswordResetAvailable())));
            }

            // Login
            var result = ControllerHelper.Login(
                signedInCustomer: signedInCustomer,
                profile: HttpContext.Profile,
                username: model.Email,
                password: model.Password,
                skinId: signedInCustomer.SkinID);

            if (result.State == AccountControllerHelper.ResultState.Error)
            {
                NoticeProvider.PushNotice(result.Message, NoticeType.Failure);

                return(View(new AccountSignInViewModel(
                                source: model,
                                captchaCode: string.Empty,
                                returnUrl: returnUrl,
                                displayCaptcha: Settings.RequireCaptchaOnLogin,
                                passwordResetAvailable: ControllerHelper.IsPasswordResetAvailable())));
            }
            else if (result.State == AccountControllerHelper.ResultState.PasswordChangeRequired)
            {
                NoticeProvider.PushNotice(result.Message, NoticeType.Info);
                return(RedirectToAction(
                           actionName: ActionNames.ChangePassword,
                           routeValues: new
                {
                    email = model.Email,
                    returnUrl = returnUrl
                }));
            }

            var targetCustomer = new Customer(model.Email);
            var identity       = ClaimsIdentityProvider.CreateClaimsIdentity(targetCustomer);

            Request
            .GetOwinContext()
            .Authentication
            .SignIn(
                properties: new Microsoft.Owin.Security.AuthenticationProperties
            {
                IsPersistent = model.PersistLogin
            },
                identities: identity);

            if (!String.IsNullOrEmpty(result.Message))
            {
                NoticeProvider.PushNotice(result.Message, NoticeType.Info);
            }

            // Clear the captcha so additional requests use a different security code.
            CaptchaStorageService.ClearSecurityCode(HttpContext);

            var safeReturnUrl = Url.MakeSafeReturnUrl(returnUrl);

            return(Redirect(safeReturnUrl));
        }