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
                }));
            }
        }
Example #2
0
        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));
        }