/// <summary> /// Function to save the current page reference in session and redirect to signup/signin page /// </summary> /// <param name="currentPage"></param> /// <param name="permission">Defines user permission for current action to be performed</param> /// <param name="UrlToGoto">Alternative URL to be redirected (Note: Session reference to previous page will be cleared).</param> static public void ProfileRedirect(this BaseSublayout page, UnderstoodDotOrg.Common.Constants.UserPermission permission, string UrlToGoto = null, bool preserveURL = false) { // only set redirect if we don't already have a place to go back to - this will allow us to "chain" permission checks without losing original return URL if (page.Session[Constants.SessionPreviousUrl] == null && !preserveURL) { page.Session[Constants.SessionPreviousUrl] = page.Page.Request.RawUrl; } switch (permission) { case Constants.UserPermission.CommunityUser: //is user logged in? if (page.CurrentMember == null) { //not logged in, please log in page.Page.Response.Redirect(SignInPageItem.GetSignInPage().GetUrl()); } else { //is user registered for community? if (String.IsNullOrEmpty(page.CurrentMember.ScreenName)) { //redirect to community sign-up redirect(page, RegisterCommunityProfileItem.GetRegisterCommunityProfilePage().GetUrl()); } } break; case Constants.UserPermission.RegisteredUser: //is user logged in? if (page.CurrentMember == null) { //not logged in, please log in redirect(page, SignInPageItem.GetSignInPage().GetUrl()); } break; case Constants.UserPermission.AnonymousUser: break; case Constants.UserPermission.AdminUser: break; case Constants.UserPermission.Moderator: break; case Constants.UserPermission.Blogger: break; case Constants.UserPermission.Expert: break; case Constants.UserPermission.InternationalUser: //redirect to international user page if (page.isInternationalUser == Constants.GeoIPLookup.InternationalStatus.UnknownInternationalUser) { redirect(page, InternationalUserPageItem.GetInternationalUserPage().GetUrl()); } break; case Constants.UserPermission.AgreedToTerms: //redirect to T&C if they have not agreed yet var termsUrl = TermsandConditionsItem.GetTermsAndConditionsPage().GetUrl(); if (page.CurrentMember != null && !page.CurrentMember.AgreedToSignUpTerms && !page.Request.RawUrl.Contains(termsUrl)) { redirect(page, termsUrl); } break; case Constants.UserPermission.CanPersonalize: if (page.CurrentMember == null) { redirect(page, SignInPageItem.GetSignInPage().GetUrl()); } else { if (page.CurrentMember.Children == null || page.CurrentMember.Children.Count == 0) { redirect(page, RegisterChildInformationItem.GetRegisterChildInfoPage().GetUrl()); } } break; default: break; } if (!preserveURL) { //everything's fine, redirect to page if it was passed page.Page.Session[Constants.SessionPreviousUrl] = null; } if (!String.IsNullOrEmpty(UrlToGoto)) { redirect(page, UrlToGoto); } }
protected void uxSubmit_Click(object sender, EventArgs e) { // server-side validation string name = string.Empty; string email = string.Empty; string password = string.Empty; string zip = uxZipCode.Text.RemoveHTML(); bool newsletter = uxNewsletterSignup.Checked; bool isFacebookUser = !string.IsNullOrEmpty(AccessToken); if (!string.IsNullOrEmpty(uxFirstName.Text)) { name = uxFirstName.Text.RemoveHTML(); } if (!string.IsNullOrEmpty(uxEmailAddress.Text)) { email = uxEmailAddress.Text; } if (isFacebookUser) { password = Constants.FacebookMember_Password; } else if (!string.IsNullOrEmpty(uxPassword.Text) && !string.IsNullOrEmpty(uxPasswordConfirm.Text) && uxPassword.Text == uxPasswordConfirm.Text) { password = uxPassword.Text; } if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(email) && !string.IsNullOrEmpty(password)) { // damnit barry, this is how you get ants. // the site keeps breaking when we test, and its breaking ugly. // if someone clicks to create a new user, we have to blow up the existing user or we're going to have a problem. this.FlushRegisteringUser(); //everything's cool if (this.registeringUser == null) { this.registeringUser = new Domain.Membership.Member(); } this.registeringUser.FirstName = name; //bg: adding in zip code this.registeringUser.ZipCode = zip.Trim(); //adding marker for FB users this.registeringUser.isFacebookUser = isFacebookUser; var membershipManager = new MembershipManager(); try { // helps to call the right addMember method... this.registeringUser = membershipManager.AddMember(this.registeringUser, email, password); } catch (Exception ex) { uxErrorMessage.Text = ex.Message; return; } this.CurrentMember = this.registeringUser; this.CurrentUser = membershipManager.GetUser(this.CurrentMember.MemberId); Response.Redirect(TermsandConditionsItem.GetTermsAndConditionsPage().GetUrl()); } else { //something failed... uxErrorMessage.Text = DictionaryConstants.SomethingFailedError; } }