Exemplo n.º 1
0
        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()));
        }
Exemplo n.º 2
0
        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()));
        }