Example #1
0
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            if (_PerformFBLoginCheck)
            {
                try
                {
                    string sessionKey = FaceBookSessionKey();
                    if (!string.IsNullOrWhiteSpace(sessionKey) && this.UserId <= 0)
                    {                                                                // we have a facebook session but the user is logged out of our site.
                        sessionKey = sessionKey.Substring(1, sessionKey.Length - 2); // remove the " from front and back....
                        System.Collections.Specialized.NameValueCollection nvc = HttpUtility.ParseQueryString(sessionKey);
                        if (nvc.Get("uid") != null)
                        {
                            string           access_token  = nvc.Get("access_token");
                            WebRequest       request       = WebRequest.Create("https://graph.facebook.com/me?access_token=" + access_token);
                            WebResponse      res           = request.GetResponse();
                            System.IO.Stream ReceiveStream = res.GetResponseStream();

                            System.Text.Encoding   encode     = System.Text.Encoding.GetEncoding("utf-8");
                            System.IO.StreamReader readStream = new System.IO.StreamReader(ReceiveStream, encode);
                            string json = readStream.ReadToEnd();

                            System.Web.Script.Serialization.JavaScriptSerializer serial = new System.Web.Script.Serialization.JavaScriptSerializer();
                            fbUser = serial.Deserialize <Affine.Data.json.FaceBookUser>(json);

                            if (!string.IsNullOrWhiteSpace(fbUser.email))
                            {
                                aqufitEntities entities = new aqufitEntities();
                                User           siteUser = null;
                                siteUser = entities.UserSettings.OfType <User>().FirstOrDefault(u => u.PortalKey == PortalId && u.FBUid == fbUser.id);
                                if (siteUser == null)
                                {
                                    siteUser = entities.UserSettings.OfType <User>().FirstOrDefault(u => u.PortalKey == PortalId && u.UserEmail.ToLower() == fbUser.email);
                                }
                                if (siteUser != null)
                                {       // we can log the user in
                                    if (siteUser.FBUid == null)
                                    {
                                        siteUser.FBUid = fbUser.id;
                                        entities.SaveChanges();
                                    }
                                    else if (siteUser.FBUid.Value != fbUser.id)
                                    {       // something strange is going on here.. these should be equal
                                        throw new Exception("Facebook Login Exception.");
                                    }
                                    UserInfo uinfo = UserController.GetUser((int)siteUser.PortalKey, (int)siteUser.UserKey, true);
                                    UserController.UserLogin((int)siteUser.PortalKey, uinfo, PortalSettings.PortalName, DotNetNuke.Services.Authentication.AuthenticationLoginBase.GetIPAddress(), true);
                                    string url = Request.RawUrl;
                                    if (!string.IsNullOrWhiteSpace(Request["ReturnUrl"]))
                                    {
                                        url = Request["returnurl"];
                                    }
                                    else if (url.Contains("/Login") || url.EndsWith("flexfwd.com/") || url.EndsWith("flexfwd.com/Home.aspx"))
                                    {
                                        url = ResolveUrl("~/") + siteUser.UserName;
                                    }
                                    Response.Redirect(url, true);
                                }
                                else if (Request["sl"] == null)         // sl (stop loop) is not defined..
                                {
                                    // TODO: this should just bring them to the info that they still need to fill out.
                                    Response.Redirect(ResolveUrl("~/RPX?sl=0"), true);
                                }
                            }
                        }
                    }
                    else if (Request.Cookies["FlexLogout"] != null)
                    {
                        Request.Cookies.Remove("FlexRM");
                        Request.Cookies.Remove("FlexLogout");
                    }
                    else if (Request.Cookies["FlexRM"] != null && this.UserId <= 0)
                    {
                        aqufitEntities entities = new aqufitEntities();
                        User           siteUser = null;
                        Guid           test     = Guid.Parse(Request.Cookies["FlexRM"].Value);
                        siteUser = entities.UserSettings.OfType <User>().FirstOrDefault(u => u.PortalKey == PortalId && u.Guid == test);
                        if (siteUser != null)
                        {       // we can log the user in
                            UserInfo uinfo = UserController.GetUser((int)siteUser.PortalKey, (int)siteUser.UserKey, true);
                            UserController.UserLogin((int)siteUser.PortalKey, uinfo, PortalSettings.PortalName, DotNetNuke.Services.Authentication.AuthenticationLoginBase.GetIPAddress(), true);
                            string url = Request.RawUrl;
                            if (!string.IsNullOrWhiteSpace(Request["ReturnUrl"]))
                            {
                                url = Request["returnurl"];
                            }
                            else if (url.Contains("/Login") || url.EndsWith("flexfwd.com/") || url.EndsWith("flexfwd.com/Home.aspx"))
                            {
                                url = ResolveUrl("~/") + siteUser.UserName;
                            }
                            Response.Redirect(url, true);
                        }
                    }
                }
                catch (Exception)
                {       // do nothing here.
                }
            }
        }
Example #2
0
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
                if (_PerformFBLoginCheck)
                {
                    try
                    {
                        string sessionKey = FaceBookSessionKey();
                        if (!string.IsNullOrWhiteSpace(sessionKey) && this.UserId <= 0)
                        {   // we have a facebook session but the user is logged out of our site.
                            sessionKey = sessionKey.Substring(1, sessionKey.Length - 2);    // remove the " from front and back....
                            System.Collections.Specialized.NameValueCollection nvc = HttpUtility.ParseQueryString(sessionKey);
                            if (nvc.Get("uid") != null)
                            {
                                string access_token = nvc.Get("access_token");
                                WebRequest request = WebRequest.Create("https://graph.facebook.com/me?access_token=" + access_token);
                                WebResponse res = request.GetResponse();
                                System.IO.Stream ReceiveStream = res.GetResponseStream();

                                System.Text.Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
                                System.IO.StreamReader readStream = new System.IO.StreamReader(ReceiveStream, encode);
                                string json = readStream.ReadToEnd();

                                System.Web.Script.Serialization.JavaScriptSerializer serial = new System.Web.Script.Serialization.JavaScriptSerializer();
                                fbUser = serial.Deserialize<Affine.Data.json.FaceBookUser>(json);

                                if (!string.IsNullOrWhiteSpace(fbUser.email))
                                {
                                    aqufitEntities entities = new aqufitEntities();
                                    User siteUser = null;
                                    siteUser = entities.UserSettings.OfType<User>().FirstOrDefault(u => u.PortalKey == PortalId && u.FBUid == fbUser.id );
                                    if (siteUser == null)
                                    {
                                        siteUser = entities.UserSettings.OfType<User>().FirstOrDefault(u => u.PortalKey == PortalId && u.UserEmail.ToLower() == fbUser.email);
                                    }
                                    if (siteUser != null)
                                    {   // we can log the user in
                                        if (siteUser.FBUid == null)
                                        {
                                            siteUser.FBUid = fbUser.id;
                                            entities.SaveChanges();
                                        }
                                        else if (siteUser.FBUid.Value != fbUser.id)
                                        {   // something strange is going on here.. these should be equal
                                            throw new Exception("Facebook Login Exception.");
                                        }
                                        UserInfo uinfo = UserController.GetUser((int)siteUser.PortalKey, (int)siteUser.UserKey, true);
                                        UserController.UserLogin((int)siteUser.PortalKey, uinfo, PortalSettings.PortalName, DotNetNuke.Services.Authentication.AuthenticationLoginBase.GetIPAddress(), true);
                                        string url = Request.RawUrl;
                                        if (!string.IsNullOrWhiteSpace(Request["ReturnUrl"]))
                                        {
                                            url = Request["returnurl"];
                                        }
                                        else if (url.Contains("/Login") || url.EndsWith("flexfwd.com/") || url.EndsWith("flexfwd.com/Home.aspx"))
                                        {
                                            url = ResolveUrl("~/") + siteUser.UserName;
                                        }
                                        Response.Redirect(url, true);
                                    }
                                    else if( Request["sl"] == null )    // sl (stop loop) is not defined..
                                    {
                                        // TODO: this should just bring them to the info that they still need to fill out.
                                        Response.Redirect(ResolveUrl("~/RPX?sl=0"), true);
                                    }
                                }
                            }
                        }
                        else if (Request.Cookies["FlexLogout"] != null)
                        {
                            Request.Cookies.Remove("FlexRM");
                            Request.Cookies.Remove("FlexLogout");
                        }
                        else if (Request.Cookies["FlexRM"] != null && this.UserId <= 0)
                        {
                            aqufitEntities entities = new aqufitEntities();
                            User siteUser = null;
                            Guid test = Guid.Parse(Request.Cookies["FlexRM"].Value);
                            siteUser = entities.UserSettings.OfType<User>().FirstOrDefault(u => u.PortalKey == PortalId && u.Guid == test);
                            if (siteUser != null)
                            {   // we can log the user in
                                UserInfo uinfo = UserController.GetUser((int)siteUser.PortalKey, (int)siteUser.UserKey, true);
                                UserController.UserLogin((int)siteUser.PortalKey, uinfo, PortalSettings.PortalName, DotNetNuke.Services.Authentication.AuthenticationLoginBase.GetIPAddress(), true);
                                string url = Request.RawUrl;
                                if (!string.IsNullOrWhiteSpace(Request["ReturnUrl"]))
                                {
                                    url = Request["returnurl"];
                                }
                                else if (url.Contains("/Login") || url.EndsWith("flexfwd.com/") || url.EndsWith("flexfwd.com/Home.aspx"))
                                {
                                    url = ResolveUrl("~/") + siteUser.UserName;
                                }
                                Response.Redirect(url, true);
                            }
                        }
                    }
                    catch (Exception)
                    {   // do nothing here.
                    }
                }
        }