Beispiel #1
0
        public bool TryLoginUsingSocialMedia(SocialMediaFormViewModel model)
        {
            try
            {
                var user = _userRepository.GetUserBy(x => x.UserEmail == model.UserEmail);
                if (user == null)
                {
                    return(false);
                }

                user.IsActive        = true;
                user.ActivationToken = string.Empty;

                _userRepository.Update(user);

                FormsAuthentication.SetAuthCookie(user.UserEmail, createPersistentCookie: false);

                return(true);
            }
            catch (Exception exception)
            {
                Log.Error("Error during social media login", exception);
                return(false);
            }
        }
Beispiel #2
0
        private bool IsFacebookTokenValid(SocialMediaFormViewModel model)
        {
            var client  = new RestClient(facebookApiBaseUrl);
            var request = new RestRequest(facebookGetAccessTokenUrl, Method.GET);

            request.AddQueryParameter("grant_type", "client_credentials");
            request.AddQueryParameter("client_id", facebookAppId);
            request.AddQueryParameter("client_secret", facebookAppSecret);
            var response = client.Execute <dynamic>(request);

            if (response.StatusCode != HttpStatusCode.OK)
            {
                return(false);
            }

            var accessToken = response.Data["access_token"];
            var userRequest = new RestRequest(facebookUserUrl);

            userRequest.AddUrlSegment("id", model.IdToken);
            userRequest.AddQueryParameter("access_token", accessToken.ToString());

            var userResponse = client.Execute <dynamic>(userRequest);

            if (response.StatusCode != HttpStatusCode.OK)
            {
                return(false);
            }

            return(userResponse.Data["id"] == model.IdToken);
        }
Beispiel #3
0
        public SocialMediaFormViewModel GetSocialMediaFormView(int currentPageId, SocialMediaFormViewModel model)
        {
            var regions = _userRepository.GetAllRegions();

            model.Agreements           = _userRepository.GetAllActiveAgreements();
            model.RegionSelectList     = new MultiSelectList(regions, "Key", "Value", regions.Take(1));
            model.CurrentUmbracoPageId = currentPageId;
            model.CurrentPageCulture   = Thread.CurrentThread.CurrentCulture;

            return(model);
        }
Beispiel #4
0
        public SocialMediaRegisterResponse RegisterUsingSocialMedia(SocialMediaFormViewModel model)
        {
            try
            {
                var errors = ValidateUser(model.UserEmail, model.SelectedRegions, model.Agreements, isNew: true);

                if (errors.Any())
                {
                    return(new SocialMediaRegisterResponse
                    {
                        IsError = true,
                        Message = "SocialMedia.Register.Failure",
                        ValidationErrors = errors
                    });
                }

                var user = _mappingService.Map <SocialMediaFormViewModel, UserDB>(model);

                if (!string.IsNullOrWhiteSpace(model.UserPassword))
                {
                    user.UserPassword = _hashingService.Hash(model.UserPassword);
                }

                user.Locale = model.CurrentPageCulture.Name;

                _userRepository.Insert(user, model.SelectedRegions, model.Agreements);
                _eventBus.Send(new NewAccountRegisteredEvent {
                    UserId = user.Id
                });


                FormsAuthentication.SetAuthCookie(user.UserEmail, createPersistentCookie: false);

                return(new SocialMediaRegisterResponse
                {
                    IsError = false,
                    Message = "SocialMedia.Register.Success"
                });
            }
            catch (Exception exception)
            {
                Log.Error("Error during registering new account using social media", exception);

                return(new SocialMediaRegisterResponse
                {
                    IsError = true,
                    Message = exception.Message
                });
            }
        }
Beispiel #5
0
        private bool IsGoogleTokenValid(SocialMediaFormViewModel model)
        {
            var client  = new RestClient(googleApiBaseUrl);
            var request = new RestRequest(googleVerifyTokenUrl, Method.GET);

            request.AddQueryParameter("access_token", model.AccessToken);
            var response = client.Execute <dynamic>(request);

            if (response.StatusCode != HttpStatusCode.OK)
            {
                return(false);
            }

            return(response.Data["user_id"] == model.IdToken &&
                   response.Data["email"] == model.UserEmail);
        }
Beispiel #6
0
        public ActionResult SocialMediaLogin(string lang, SocialMediaFormViewModel model)
        {
            if (!_socialMediaService.ValidateToken(model))
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            var isSuccess = _accountService.TryLoginUsingSocialMedia(model);

            if (isSuccess)
            {
                CookiesExtensions.CreateCookie(CookieVariables.TempMessageCookie, "Login.Submit.Success");
            }

            return(Json(new { LoggedIn = isSuccess }));
        }
Beispiel #7
0
        public ActionResult SubmitSocialMediaForm(SocialMediaFormViewModel model)
        {
            if (!_socialMediaService.ValidateToken(model))
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            SetCulture(model.CurrentPageCulture);

            if (ModelState.IsValid)
            {
                model.Response = _accountService.RegisterUsingSocialMedia(model);

                if (model.Response.IsError && model.Response.ValidationErrors.Any())
                {
                    MapErrorsToModelState(model.Response.ValidationErrors);
                }

                CookiesExtensions.CreateCookie(CookieVariables.TempMessageCookie, model.Response.Message);
            }

            model = _accountService.GetSocialMediaFormView(model.CurrentUmbracoPageId, model);
            return(PartialView("SocialMediaFormPartial", model));
        }
Beispiel #8
0
 public bool ValidateToken(SocialMediaFormViewModel model)
 {
     return(model.Type == "facebook"
         ? IsFacebookTokenValid(model)
         : IsGoogleTokenValid(model));
 }