Exemplo n.º 1
0
        protected override DriverResult Display(FacebookConnectWidgetPart part, string displayType, dynamic shapeHelper)
        {
            return(ContentShape("Parts_FacebookConnectWidget",
                                () =>
            {
                var settings = _siteService.GetSiteSettings().As <FacebookConnectSettingsPart>();

                var authenticatedUser = _authenticationService.GetAuthenticatedUser();
                var isConnected = _facebookConnectService.AuthenticatedFacebookUserIsSaved() ||
                                  (authenticatedUser != null && !string.IsNullOrEmpty(authenticatedUser.As <FacebookUserPart>().Name));

                IFacebookUser authenticatedFacebookUser = null;

                if (isConnected)
                {
                    authenticatedFacebookUser = authenticatedUser.As <FacebookUserPart>();
                }

                return shapeHelper.Parts_FacebookConnectWidget(
                    IsAuthenticated: authenticatedUser != null,
                    IsConnected: isConnected,
                    IsAuthenticatedWithFacebookConnect: _facebookConnectService.IsAuthenticated(),
                    AuthenticatedFacebookUser: authenticatedFacebookUser);
            }));
        }
Exemplo n.º 2
0
        public ActionResult Connect(string returnUrl = "")
        {
            var settings     = GetSettings();
            var facebookUser = _facebookConnectService.FetchMe();

            if (ValidateUser(facebookUser))
            {
                if (_facebookConnectService.AuthenticatedFacebookUserIsSaved())
                {
                    var user = _facebookConnectService.UpdateAuthenticatedFacebookUser(facebookUser);
                    _authenticationService.SignIn(user.As <IUser>(), false);
                }
                // With this existing users can attach their FB account to their local accounts
                else if (_authenticationService.IsAuthenticated())
                {
                    _facebookConnectService.UpdateFacebookUser(_authenticationService.GetAuthenticatedUser(), facebookUser);
                }
                else if (settings.SimpleRegistration)
                {
                    return(new ShapeResult(this, _orchardServices.New.FacebookConnectRegistrationChooser(ReturnUrl: returnUrl)));
                }
                else
                {
                    return(this.RedirectLocal(Url.Action("Register", "Account", new { Area = "Orchard.Users" })));
                }
            }

            return(this.RedirectLocal(returnUrl)); // "this" is necessary, as this is from an extension (Orchard.Mvc.Extensions.ControllerExtensions)
        }
        public void Created(UserContext context)
        {
            if (!_facebookConnectService.IsAuthenticated())
            {
                return;
            }

            // This can happen if someone connects to the site with FB, logs out then registers a new user while being logged in to FB.
            // This prevents to attach the same FB user to different local users.
            if (_facebookConnectService.AuthenticatedFacebookUserIsSaved())
            {
                return;
            }

            var facebookUser = _facebookConnectService.FetchMe();
            IEnumerable <FacebookConnectValidationKey> errors;

            if (_facebookConnectService.UserIsValid(facebookUser, _siteService.GetSiteSettings().As <FacebookConnectSettingsPart>(), out errors))
            {
                _facebookConnectService.UpdateFacebookUser(context.User.As <IUser>(), facebookUser);
            }
        }