Пример #1
0
        private User GetNewUser(UserSignupVM model, bool isSocialUser)
        {
            var newUser = new User(Guid.NewGuid(), DateTime.Now, false, isSocialUser);

            if (!isSocialUser)
            {
                SetPassword(newUser, model.Password);
            }
            return(newUser);
        }
        private UserSignupVM GetSignupVMFromFbGet(FacebookClient fb)
        {
            dynamic me           = fb.Get("me?fields=first_name,last_name,email");
            var     userSignupVM = new UserSignupVM
            {
                Email = me.email,
                Name  = me.first_name + " " + me.last_name
            };

            return(userSignupVM);
        }
Пример #3
0
        public SignUpResponse SignUpUser(UserSignupVM model, bool isSocialUser)
        {
            if (HasSameEmail(model.Email))
            {
                return(new SignUpResponse(false, ErrorCode.DUPLICATEEMAIL));
            }

            var newUser = GetNewUser(model, isSocialUser);

            Mapper.SignupVMToUserForSignUp(model, newUser);

            UnitOfWork.Users.Add(newUser);
            UnitOfWork.Complete();

            return(new SignUpResponse(true, newUser.UserId));
        }
Пример #4
0
        private async Task <UserSignupVM> GetGoogleUserData(string accessToken)
        {
            HttpClient httpClient = new HttpClient();
            var        url        = "https://www.googleapis.com/oauth2/v1/userinfo?access_token=" + accessToken;

            httpClient.CancelPendingRequests();
            HttpResponseMessage output = await httpClient.GetAsync(url);

            if (output.IsSuccessStatusCode)
            {
                string outputData = await output.Content.ReadAsStringAsync();

                UserSignupVM vm = JsonConvert.DeserializeObject <UserSignupVM>(outputData);
                return(vm);
            }
            return(null);
        }
Пример #5
0
        public ActionResult SignUp(UserSignupVM model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var response = AccountService.SignUpUser(model, false);

            if (response.Success)
            {
                base.SignUserIn(response.UserId, model.Email, true);
                return(ReturnTo(returnUrl));
            }
            else
            {
                ModelState.AddModelError("", response.ErrorCode.ToDescription());
                return(View(model));
            }
        }
Пример #6
0
        protected ActionResult SignUpWithSocialAccount(UserSignupVM model, object returnUrl)
        {
            if (model == null || model.Email == null)
            {
                throw new Exception("Invalid data from social account");
            }

            var response = AccountService.SignUpUser(model, true);

            //duplicate error is only error thrown from signup user
            if (!response.Success && response.ErrorCode == ErrorCode.DUPLICATEEMAIL)
            {
                SignInWithSocialAccount(model.Email);
            }
            else
            {
                SignUserIn(response.UserId, model.Email, true);
            }

            return(ReturnToEither(returnUrl));
        }
Пример #7
0
        public async Task <ActionResult> GoogleCallback(string code, string callBackAction, string errorReturnToAction, object returnUrl)
        {
            try
            {
                HttpWebRequest    webRequest  = GetHttpWebRequest(Request, code, callBackAction);
                GoogleAccessToken accessToken = GetAccessToken(webRequest);

                if (!IsAccessTokenValid(accessToken))
                {
                    throw new Exception("Invalid access token");
                }

                UserSignupVM model = await GetGoogleUserData(accessToken.access_token);

                return(base.SignUpWithSocialAccount(model, returnUrl));
            }
            catch (Exception)
            {
                TempData[SocialAccount.SOCIALSIGNUPERROR.ToDescription()] = ErrorCode.SOCIALSIGNUPERROR.ToDescription();
                return(RedirectToAction(errorReturnToAction, "Account", new { returnUrl = returnUrl }));
            }
        }
Пример #8
0
 public static void SignupVMToUserForSignUp(UserSignupVM vModel, User domain)
 {
     domain.Name  = vModel.Name;
     domain.Email = vModel.Email;
 }