public ActionResult FacebookCallback(string code) { var result = _facebookService.Authenticate(code); if (result.IsSuccess) { var user = result.Data as User; var isNewUser = !_userRepository.Find(e => e.Username == user.Username).Any(); var regResult = _accountService.RegisterOrLoginAuth(new UserAccount.RegisterModel { UserName = user.Username, FirstName = user.FirstName, LastName = user.LastName, BirthDate = user.BirthDate, EmailAddress = user.EmailAddress }); user.Id = _userRepository.Find(e => e.Username == user.Username).FirstOrDefault()?.Id ?? 0; if (user.Id > 0) { _membershipService.CreateFreeMembership(user.Id); } if (regResult.IsSuccess) { if (isNewUser) { return(RedirectToAction("FacebookPostRegsiter", "Account", new { username = user.Username })); } return(ProcessSavedResults()); } result.Errors.AddRange(regResult.Errors); } foreach (var registrationError in result.Errors) { if (registrationError.Exception != null && registrationError.Exception.IsDuplicateIndexError()) { var duplicateUser = registrationError.Data.MapTo <User>(); var serviceError = registrationError.Exception.GetServiceErrorFromException(duplicateUser); ModelState.AddModelError("", serviceError.ErrorMessage); } else { ModelState.AddModelError(registrationError.FieldName, registrationError.ErrorMessage); } } return(View("Login", new UserAccount.LoginModel())); }
public ActionResult FacebookCallback(string code) { ServiceResult result = null; result = _facebookService.Authenticate(code); if (result.IsSuccess) { var user = result.Data as User; var regResult = _accountService.RegisterOrLoginAuth(new UserAccount.RegisterModel { UserName = user.Username, FirstName = user.FirstName, LastName = user.LastName, BirthDate = user.BirthDate, EmailAddress = user.EmailAddress }); if (regResult.IsSuccess) { return(RedirectToAction("Index", "Home")); } result.Errors.AddRange(regResult.Errors); } foreach (var registrationError in result.Errors) { if (registrationError.Exception != null && registrationError.Exception.IsDuplicateIndexError()) { var duplicateUser = registrationError.Data.MapTo <User>(); var serviceError = registrationError.Exception.GetServiceErrorFromException(duplicateUser); ModelState.AddModelError("", serviceError.ErrorMessage); } else { ModelState.AddModelError(registrationError.FieldName, registrationError.ErrorMessage); } } return(View("Login", new UserAccount.LoginModel())); }