Exemple #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);
            }));
        }
        /// <summary>
        /// Checks if the currently authenticated Facebook user's profile data is saved to a local user profile
        /// </summary>
        public static bool AuthenticatedFacebookUserIsSaved(this IFacebookConnectService service)
        {
            if (!service.IsAuthenticated())
            {
                return(false);
            }

            return(service.GetFacebookUser(service.Session.UserId) != null);
        }
        /// <summary>
        /// Gets the current authenticated user's Facebook user profile data
        /// </summary>
        public static IFacebookUser GetAuthenticatedFacebookUser(this IFacebookConnectService service)
        {
            if (!service.IsAuthenticated())
            {
                return(null);
            }

            return(service.GetFacebookUser(service.Session.UserId));
        }
        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);
            }
        }