Exemplo n.º 1
0
 public ActionResult RemoveParameterAssociation(string returnUrl)
 {
     ExternalAuthorizerHelper.RemoveParameters();
     return(RedirectToReferrer(returnUrl));
 }
Exemplo n.º 2
0
        public ActionResult Login(string returnUrl)
        {
            var processor = _openAuthenticationService.LoadExternalAuthenticationMethodBySystemName("ExternalAuth.OpenId");

            if (processor == null ||
                !processor.IsMethodActive(_externalAuthenticationSettings) ||
                !processor.PluginDescriptor.Installed ||
                !(_storeContext.CurrentStore.Id == 0 ||
                  _settingService.GetSettingByKey <string>(processor.PluginDescriptor.GetSettingKey("LimitedToStores")).ToIntArrayContains(_storeContext.CurrentStore.Id, true)))
            {
                throw new SmartException("OpenID module cannot be loaded");
            }

            if (!_openIdProviderAuthorizer.IsOpenIdCallback)
            {
                var viewModel = new LoginModel();
                TryUpdateModel(viewModel);
                _openIdProviderAuthorizer.EnternalIdentifier = viewModel.ExternalIdentifier;
            }

            var result = _openIdProviderAuthorizer.Authorize(returnUrl);

            switch (result.AuthenticationStatus)
            {
            case OpenAuthenticationStatus.Error:
            {
                if (!result.Success)
                {
                    foreach (var error in result.Errors)
                    {
                        ExternalAuthorizerHelper.AddErrorsToDisplay(error);
                    }
                }

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

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

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

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

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

            default:
                break;
            }

            if (result.Result != null)
            {
                return(result.Result);
            }
            return(HttpContext.Request.IsAuthenticated ? new RedirectResult(!string.IsNullOrEmpty(returnUrl) ? returnUrl : "~/") : new RedirectResult(Url.LogOn(returnUrl)));
        }
        private ActionResult LoginInternal(string returnUrl, bool verifyResponse)
        {
            var processor = _openAuthenticationService.LoadExternalAuthenticationMethodBySystemName("ExternalAuth.Facebook");

            if (processor == null ||
                !processor.IsMethodActive(_externalAuthenticationSettings) ||
                !processor.PluginDescriptor.Installed ||
                !_pluginFinder.AuthenticateStore(processor.PluginDescriptor, _storeContext.CurrentStore.Id))
            {
                throw new NopException("Facebook module cannot be loaded");
            }

            var viewModel = new LoginModel();

            TryUpdateModel(viewModel);

            var result = _oAuthProviderFacebookAuthorizer.Authorize(returnUrl, verifyResponse);

            switch (result.AuthenticationStatus)
            {
            case OpenAuthenticationStatus.Error:
            {
                if (!result.Success)
                {
                    foreach (var error in result.Errors)
                    {
                        ExternalAuthorizerHelper.AddErrorsToDisplay(error);
                    }
                }

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

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

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

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

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

            default:
                break;
            }

            if (result.Result != null)
            {
                return(result.Result);
            }
            return(HttpContext.Request.IsAuthenticated ? new RedirectResult(!string.IsNullOrEmpty(returnUrl) ? returnUrl : "~/") : new RedirectResult(Url.LogOn(returnUrl)));
        }
        /// <summary>
        /// 回调页面
        /// </summary>

        public ActionResult LoginCallback(LoginModel model, string returnUrl)
        {
            QOpenClient qzone    = (QOpenClient)this.Session["QzoneOauth"];
            var         verifier = Request.Params["code"];
            var         state    = Request.Params["state"];

            if (Request.Params["code"] != null)
            {
                if (qzone == null)
                {
                    var storeScope             = this.GetActiveStoreScopeConfiguration(_storeService, _workContext);
                    var qqExternalAuthSettings = _settingService.LoadSetting <QQExternalAuthSettings>(storeScope);
                    qzone = new QOpenClient(verifier, state, new QQConnectConfig(qqExternalAuthSettings.AppKey, qqExternalAuthSettings.AppSecret, qqExternalAuthSettings.CallBackURI, qqExternalAuthSettings.AuthorizeURL));
                    if (qzone != null)
                    {
                        this.Session["QzoneOauth"] = qzone;
                    }
                }
                else
                {
                    qzone = (QOpenClient)this.Session["QzoneOauth"];
                }
                string requestState = Session["requeststate"].ToString();
                if (state == requestState)
                {
                    if (qzone.OAuthToken != null)
                    {
                        if (string.IsNullOrEmpty(qzone.OAuthToken.OpenId))
                        {
                            throw new Exception("Authentication result does not contain openid");
                        }

                        if (string.IsNullOrEmpty(qzone.OAuthToken.AccessToken))
                        {
                            throw new Exception("Authentication result does not contain accesstoken data");
                        }
                        var parameters = new OAuthAuthenticationParameters(Provider.SystemName)
                        {
                            ExternalIdentifier = qzone.OAuthToken.OpenId,
                            OAuthToken         = qzone.OAuthToken.AccessToken,
                            OAuthAccessToken   = qzone.OAuthToken.OpenId,
                        };
                        UserClaims claims = new UserClaims();
                        claims.Contact = new ContactClaims();
                        parameters.AddClaim(claims);
                        Session["QQAuthorizeParameters"] = parameters;
                        var result = _authorizer.Authorize(parameters);
                        switch (result.Status)
                        {
                        case OpenAuthenticationStatus.Error:
                        {
                            if (!result.Success)
                            {
                                foreach (var error in result.Errors)
                                {
                                    ExternalAuthorizerHelper.AddErrorsToDisplay(error);
                                }
                            }
                            return(RedirectToRoute("ThirdAccountRegister", new { styleId = 1 }));
                        }

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

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

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

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

                        default:
                            break;
                        }
                    }
                    return(Redirect(Url.Action("Index", "Home")));
                }
            }
            return(View());
        }