private MembershipUser Authorize(FacebookPrincipalSerializableModel model, out string[] roles) { MembershipUser mUser = null; roles = null; lock (locker) { //if (Membership.ValidateUser(model.UniqueLink,model.FacebookId)) { var col = Membership.FindUsersByName(model.UniqueLink); if (col != null && col.Count > 0) { foreach (MembershipUser user in col) { if (user.GetPassword() == model.FacebookId) { mUser = user; } } } if (mUser != null) { roles = Roles.GetRolesForUser(mUser.UserName); } if (mUser == null) { //New user mUser = Membership.CreateUser(model.UniqueLink, model.FacebookId, model.EMail); roles = new string[] { "ForumUser" }; //Free read access to the forum //Special NFORUM attributes var membersfound = Member.GetMemberByName(model.UniqueLink, true); if (membersfound != null && membersfound.Length > 0) { var m = membersfound[0]; if (m != null) { m.getProperty("forumUserTwitterUrl").Value = String.Empty; m.getProperty("forumUserPosts").Value = 0; m.getProperty("forumUserKarma").Value = 0; m.getProperty("forumUserAllowPrivateMessages").Value = 1; m.getProperty("forumUserLastPrivateMessage").Value = DateTime.Now; m.getProperty("forumUserIsAdmin").Value = 0; m.getProperty("forumUserIsBanned").Value = 0; m.getProperty("forumUserIsAuthorised").Value = 1; var mg = MemberGroup.GetByName("ForumUser"); m.AddGroup(mg.Id); } } } } return(mUser); }
private MembershipUser Authorize(FacebookPrincipalSerializableModel model, out string[] roles) { MembershipUser mUser = null; roles = null; lock(locker) { //if (Membership.ValidateUser(model.UniqueLink,model.FacebookId)) { var col = Membership.FindUsersByName(model.UniqueLink); if (col != null && col.Count > 0) foreach (MembershipUser user in col) { if (user.GetPassword() == model.FacebookId) mUser = user; } if (mUser != null) { roles = Roles.GetRolesForUser(mUser.UserName); } if (mUser == null) { //New user mUser = Membership.CreateUser(model.UniqueLink, model.FacebookId, model.EMail); roles = new string[] { "ForumUser" }; //Free read access to the forum //Special NFORUM attributes var membersfound = Member.GetMemberByName(model.UniqueLink, true); if (membersfound != null && membersfound.Length > 0) { var m = membersfound[0]; if (m != null) { m.getProperty("forumUserTwitterUrl").Value = String.Empty; m.getProperty("forumUserPosts").Value = 0; m.getProperty("forumUserKarma").Value = 0; m.getProperty("forumUserAllowPrivateMessages").Value = 1; m.getProperty("forumUserLastPrivateMessage").Value = DateTime.Now; m.getProperty("forumUserIsAdmin").Value = 0; m.getProperty("forumUserIsBanned").Value = 0; m.getProperty("forumUserIsAuthorised").Value = 1; var mg = MemberGroup.GetByName("ForumUser"); m.AddGroup(mg.Id); } } } } return mUser; }
protected void Page_Load(object sender, EventArgs e) { if (Request.Params["comefromfucker"] == "true") { var result = OAuthWebSecurity.VerifyAuthentication("/authentication.aspx?comefromfucker=true"); if (result.IsSuccessful) { FacebookId = result.ExtraData["id"]; string link = new Uri(result.ExtraData["link"]).AbsolutePath.Substring(1); string email = ""; string first_name = ""; try { //email request var client = new FacebookClient(result.ExtraData["accesstoken"]); //var me = (IDictionary<string,object>)client.Get("me"); //email = (string)me["email"]; dynamic me = client.Get("me", new { fields = "email, first_name" }); email = me.email; first_name = me.first_name; } catch (FacebookOAuthException) { } if (String.IsNullOrEmpty(email)) email = String.Format("{0}@nomail.com", link); FacebookPrincipalSerializableModel model = new FacebookPrincipalSerializableModel() { UserName = result.UserName, FirstName = first_name, UniqueLink = link, EMail = email, FacebookId = result.ExtraData["id"], AccessToken = result.ExtraData["accesstoken"] }; string userData = new JavaScriptSerializer().Serialize(model); var ticket = new FormsAuthenticationTicket( 1, result.UserName, DateTime.Now, DateTime.Now.AddMinutes(30), true, userData, FormsAuthentication.FormsCookiePath); string encryptedTicket = FormsAuthentication.Encrypt(ticket); //Cookie de autenticación. Almacenado el accesstoken Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket)); LiteralTitle.Text = Resources.Resource1.WithoutProblems; LiteralText.Text = String.Format(Resources.Resource1.AuthenticationWelcomeMessage, result.UserName); } else { LiteralTitle.Text = Resources.Resource1.WithProblems; LiteralText.Text = Resources.Resource1.TryAgainLater; } } else { if (OAuthWebSecurity.RegisteredClientData == null || OAuthWebSecurity.RegisteredClientData.Count == 0) { OAuthWebSecurity.RegisterFacebookClient( appId: Resources.Resource1.FacebookTriphulcasAppID, appSecret: Resources.Resource1.FacebookTriphulcasAppSecret); } OAuthWebSecurity.RequestAuthentication("facebook", "/authentication.aspx?comefromfucker=true"); } }