protected override SubmissionExecuteResult Execute(LoginCustomerModel model) { var membership = MemberPluginHelper.GetMembership(); var valid = _userManager.Validate(membership, model.Email, model.Password); Customer customer = null; if (valid) { customer = Site.Commerce().Customers.Query().ByEmail(model.Email).FirstOrDefault(); if (customer == null) { valid = false; } } if (!valid) { throw new InvalidModelStateException(new Dictionary <string, string> { { "Email", "Email and/or password are incorrect." } }); } HttpContext.Membership().SetAuthCookie(model.Email, model.RememberMe.GetValueOrDefault(false)); var sessionId = EngineContext.Current.Resolve <IShoppingCartSessionIdProvider>().GetCurrentSessionId(false); if (!String.IsNullOrWhiteSpace(sessionId)) { Site.Commerce().ShoppingCarts.MigrateCart(customer.Id, sessionId); } var returnUrl = ResolveUrl(model.ReturnUrl, ControllerContext); return(new SubmissionExecuteResult { RedirectUrl = returnUrl, Data = new LoginCustomerResult { CustomerId = customer.Id, Email = model.Email } }); }
protected override SubmissionExecuteResult Execute(RegisterCustomerModel model) { var membership = MemberPluginHelper.GetMembership(); var user = _userManager.Create(membership, model.Email, model.Email, model.Password, true, "en-US", null); var customer = new Customer { Email = model.Email, FirstName = model.FirstName, LastName = model.LastName, Gender = model.Gender }; if (model.CustomFields != null) { foreach (var each in model.CustomFields) { customer.CustomFields.Add(each.Key, each.Value); } } var customerId = Site.Commerce().Customers.Create(customer); if (model.SetAuthCookie) { var auth = new MembershipAuthentication(Site, membership, HttpContext); auth.SetAuthCookie(customer.Email, false); var sessionId = EngineContext.Current.Resolve <IShoppingCartSessionIdProvider>().GetCurrentSessionId(false); if (!String.IsNullOrWhiteSpace(sessionId)) { Site.Commerce().ShoppingCarts.MigrateCart(customerId, sessionId); } } return(new SubmissionExecuteResult { RedirectUrl = ResolveUrl(model.ReturnUrl, ControllerContext), Data = new RegisterCustomerResult { CustomerId = customer.Id } }); }