public override void Process(SignInArgs args) { try { // get current user string username = args.User.InnerUser.Profile.Email; GetUserRequest request = new GetUserRequest(username); GetUserResult user = _customerServiceProvider.GetUser(request); if (!user.Success || user.CommerceUser == null) { // if user isn't a customer, run customer create pipeline string password = Guid.NewGuid().ToString(); CreateUserRequest createUserRequest = new CreateUserRequest(username, password, username, _storefrontContext.CurrentStorefront.ShopName); CreateUserResult createUserResult = _customerServiceProvider.CreateUser(createUserRequest); } // identify commerce user and merge anonymous cart Cart result = _cartManager.GetCurrentCart(_visitorContext, _storefrontContext, false).Result; Tracker.Current.CheckForNull().Session.IdentifyAs("CommerceUser", username); _visitorContext.UserJustLoggedIn(); _cartManager.MergeCarts(_storefrontContext.CurrentStorefront, _visitorContext, _visitorContext.CustomerId, result); } catch (Exception ex) { // log error Sitecore.Diagnostics.Log.Error($"Failed to create a customer for external user login {args.User.UserName}. {ex.Message}", this); } }
public ManagerResponse <GetUserResult, CommerceUser> GetUser(string userName) { Assert.ArgumentNotNullOrEmpty(userName, nameof(userName)); var request = new GetUserRequest(userName); var result = CustomerServiceProvider.GetUser(request); if (!result.Success || result.CommerceUser == null) { var message = DictionaryPhraseRepository.Current.Get("/System Messages/Account Manager/User Not Found Error", "The email address does not exists"); result.SystemMessages.Add(new SystemMessage { Message = message }); } result.WriteToSitecoreLog(); return(new ManagerResponse <GetUserResult, CommerceUser>(result, result.CommerceUser)); }
/// <summary>Gets the current user identifier.</summary> /// <returns>The user id to use to search for the carts.</returns> protected virtual string GetCurrentUserId() { string userName = CommerceTracker.Current.ContactUserName; if (Context.User.IsAuthenticated) { GetUserResult user = CustomerService.GetUser(new GetUserRequest(userName)); if (user != null && user.Success && user.CommerceUser != null) { userName = user.CommerceUser.ExternalId; } } else { userName = CommerceTracker.Current.ContactId; } return(userName); }