public ActionResult ExternalLoginCallback(string returnUrl) { // Rewrite request before it gets passed on to the OAuth Web Security classes GooglePlusClient.RewriteRequest(); AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl })); if (!result.IsSuccessful) { return(RedirectToAction("ExternalLoginFailure")); } if (OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: false)) { return(RedirectToLocal(returnUrl)); } if (User.Identity.IsAuthenticated) { // If the current user is logged in add the new account OAuthWebSecurity.CreateOrUpdateAccount(result.Provider, result.ProviderUserId, User.Identity.Name); return(RedirectToLocal(returnUrl)); } else { // User is new, ask for their desired membership name string loginData = OAuthWebSecurity.SerializeProviderUserId(result.Provider, result.ProviderUserId); ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(result.Provider).DisplayName; ViewBag.ReturnUrl = returnUrl; return(View("ExternalLoginConfirmation", new RegisterExternalLoginModel { UserName = result.UserName, ExternalLoginData = loginData })); } }
public ActionResult ExternalLoginCallback(string returnUrl) { // Rewrite request before it gets passed on to the OAuth Web Security classes GooglePlusClient.RewriteRequest(); AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl })); if (!result.IsSuccessful) { return(RedirectToAction("ExternalLoginFailure")); } if (OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: false)) { return(RedirectToLocal(returnUrl)); } ///////////////////////////////////// user userEdit = null; using (var dc = new MainDBEntities()) { userEdit = dc.users.FirstOrDefault(u => u.email == result.UserName); } if (userEdit != null) { // If the current user is logged in add the new account // OAuthWebSecurity.CreateOrUpdateAccount(result.Provider, result.ProviderUserId, result.UserName); FormsAuthentication.SetAuthCookie(result.UserName, false); return(RedirectToAction("List")); //return RedirectToLocal(returnUrl); } else { // User is new, ask for their desired membership name string loginData = OAuthWebSecurity.SerializeProviderUserId(result.Provider, result.ProviderUserId); ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(result.Provider).DisplayName; ViewBag.ReturnUrl = returnUrl; return(View("ExternalLoginConfirmation", new RegisterExternalLoginModel { UserName = result.UserName, ExternalLoginData = loginData })); } }
public ActionResult ExternalLoginCallback(string returnUrl) { // Rewrite request before it gets passed on to the OAuth Web Security classes GooglePlusClient.RewriteRequest(); AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl })); if (!result.IsSuccessful) { return(RedirectToAction("Login")); //return RedirectToAction("ExternalLoginFailure"); } if (OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: false)) { return(RedirectToLocal(returnUrl)); } if (User.Identity.IsAuthenticated) { // If the current user is logged in add the new account OAuthWebSecurity.CreateOrUpdateAccount(result.Provider, result.ProviderUserId, User.Identity.Name); return(RedirectToLocal(returnUrl)); } else { //If user email is public create the user and if (servicesManager.AccountService.IsEmailExist(result.UserName) <= 0) { servicesManager.AccountService.AddUser(result.ExtraData["name"], result.UserName); } OAuthWebSecurity.CreateOrUpdateAccount(result.Provider, result.ProviderUserId, result.UserName); OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: false); servicesManager.AccountService.Subscribe(servicesManager.AccountService.IsEmailExist(result.UserName.Trim()), result.UserName, 1); return(RedirectToLocal(returnUrl)); //// User is new, ask for their desired membership name //string loginData = OAuthWebSecurity.SerializeProviderUserId(result.Provider, result.ProviderUserId); //ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(result.Provider).DisplayName; //ViewBag.ReturnUrl = returnUrl; //return View("ExternalLoginConfirmation", new RegisterExternalLoginModel { UserName = result.UserName, ExternalLoginData = loginData }); } }
public ActionResult ExternalLoginCallback(string returnUrl) { try { GooglePlusClient.RewriteRequest(); string firstname = string.Empty; string lastname = string.Empty; string email = string.Empty; AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl })); if (!result.IsSuccessful) { return(RedirectToAction("ExternalLoginFailure")); } if (result.ExtraData.ContainsKey("accesstoken")) { Session["accesstoken"] = result.ExtraData["accesstoken"].ToString(); Session["provider"] = result.Provider.ToLower(); if (result.Provider.ToLower() == "linkedin") { firstname = result.ExtraData["firstname"].ToString(); lastname = result.ExtraData["lastname"].ToString(); email = result.ExtraData["email"].ToString(); } else if (result.Provider.ToLower() == "googleplus") { firstname = result.ExtraData["name"].ToString(); lastname = result.ExtraData["family_name"].ToString(); email = result.ExtraData["email"].ToString(); } else if (result.Provider.ToLower() == "facebook") { firstname = result.ExtraData["firstname"].ToString(); lastname = result.ExtraData["lastname"].ToString(); email = result.ExtraData["email"].ToString(); } } //User name already register check with websecurity(checking point-redirect to main page) if (OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: false)) { return(RedirectToLocal(returnUrl)); } if (User.Identity.IsAuthenticated) { // If the current user is logged in add the new account OAuthWebSecurity.CreateOrUpdateAccount(result.Provider, result.ProviderUserId, User.Identity.Name); return(RedirectToLocal(returnUrl)); } else { // User is new, ask for their desired membership name string loginData = OAuthWebSecurity.SerializeProviderUserId(result.Provider, result.ProviderUserId); ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(result.Provider).DisplayName; ViewBag.ReturnUrl = returnUrl; return(View("ExternalLoginConfirmation", new RegisterExternalLoginModel { UserName = result.UserName, FirstName = firstname, LastName = lastname, Email = email, ExternalLoginData = loginData })); } } catch (Exception ex) { using (UsersContext db = new UsersContext()) { db.ErrorsLog.Add(new ErrorLog { ExceptionMessage = ex.Message, ExceptionStackTrace = ex.StackTrace, ErrorLogDate = DateTime.Now.ToString() }); db.SaveChanges(); } } return(RedirectToLocal(returnUrl)); }