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); } }
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); }
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); }
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 }); } }
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); }
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 })); }
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)); }
public bool ValidateToken(SocialMediaFormViewModel model) { return(model.Type == "facebook" ? IsFacebookTokenValid(model) : IsGoogleTokenValid(model)); }