Ejemplo n.º 1
0
        public ActionResult AuthenticationButtonHandler()
        {
            var processor = _openAuthenticationService.Value.LoadExternalAuthenticationMethodBySystemName(AmazonPayPlugin.SystemName, Services.StoreContext.CurrentStore.Id);

            if (processor == null || !processor.IsMethodActive(_externalAuthenticationSettings.Value))
            {
                throw new SmartException(T("Plugins.Payments.AmazonPay.AuthenticationNotActive"));
            }

            var returnUrl = Session["AmazonAuthReturnUrl"] as string;
            var result    = _apiService.Authorize(returnUrl);

            switch (result.AuthenticationStatus)
            {
            case OpenAuthenticationStatus.Error:
                result.Errors.Each(x => NotifyError(x));
                return(new RedirectResult(Url.LogOn(returnUrl)));

            case OpenAuthenticationStatus.AssociateOnLogon:
                return(new RedirectResult(Url.LogOn(returnUrl)));

            case OpenAuthenticationStatus.AutoRegisteredEmailValidation:
                return(RedirectToRoute("RegisterResult", new { resultId = (int)UserRegistrationType.EmailValidation, returnUrl }));

            case OpenAuthenticationStatus.AutoRegisteredAdminApproval:
                return(RedirectToRoute("RegisterResult", new { resultId = (int)UserRegistrationType.AdminApproval, returnUrl }));

            case OpenAuthenticationStatus.AutoRegisteredStandard:
                return(RedirectToRoute("RegisterResult", new { resultId = (int)UserRegistrationType.Standard, returnUrl }));

            default:
                if (result.Result != null)
                {
                    return(result.Result);
                }

                if (HttpContext.Request.IsAuthenticated)
                {
                    return(RedirectToReferrer(returnUrl, "~/"));
                }

                return(new RedirectResult(Url.LogOn(returnUrl)));
            }
        }