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); })); }
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); } }