protected void Page_Load(object sender, EventArgs e) { int maxRegistration = Convert.ToInt32(ConfigurationManager.AppSettings["MaxRegistration"] ?? "99999999"); int numberRegisteredCurrentYear = Utils.GetNumberRegistered(); bool registrationClosed = numberRegisteredCurrentYear > maxRegistration; // if not logged in, don't let them go to registratoin page if full if (!Context.User.Identity.IsAuthenticated && registrationClosed) { Response.Redirect("~/CodeCampClosedForRegistration.aspx"); } if (!IsPostBack) { int sponsorListId = Utils.GetSponsorIdBasedOnUsername(Context.User.Identity.Name); if (sponsorListId > 0) { var rec = SponsorListManager.I.Get(new SponsorListQuery() { Id = sponsorListId }).FirstOrDefault(); HyperLinkSponsorInformation.Text = String.Format( "Sponsorship Information For {0}", rec.SponsorName); HyperLinkSponsorInformation.Visible = true; } } // if logged in, but currently not registered for saturday or sunday, don't let them login in unless special role set if (Context.User.Identity.IsAuthenticated && registrationClosed) { if (!Utils.CheckUserIsAllowRegistration() && !Utils.CheckUserIsVolunteerCoordinator() && !Utils.CheckUserIsPresenterOrAdmin()) { int attendeeId = Utils.GetAttendeesIdFromUsername(Context.User.Identity.Name); var attendeeRec = AttendeesManager.I.Get(new AttendeesQuery() {Id = attendeeId}).FirstOrDefault(); if (attendeeRec != null) { if (!Utils.IsRegisteredForCurrentCodeCampYear(Context.User.Identity.Name, Utils.CurrentCodeCampYear)) { Response.Redirect("~/CodeCampClosedForRegistration.aspx"); } } } } // could optimize below if statement) if ((ConfigurationManager.AppSettings["SubmitSessionsOpen"] != null && ConfigurationManager.AppSettings["SubmitSessionsOpen"].Equals("true")) || Utils.CheckUserIsSubmitSession() || Utils.CheckUserIsAdmin()) { CheckBoxSpeakerDDL.Enabled = true; LabelSessionClosedMessage.Text = String.Empty; } else { CheckBoxSpeakerDDL.Enabled = false; LabelSessionClosedMessage.Text = "Sessions are closed to new submissions"; } if (Request.QueryString["PKID"] != null) { string guidString = Request.QueryString["PKID"]; string username = Utils.GetAttendeeUsernameByGUID(guidString); if (!String.IsNullOrEmpty(username)) { if (!Utils.GetIgnoreAutoSignOnGuid(username)) { if (!string.IsNullOrEmpty(username)) { if (User.Identity.IsAuthenticated) { FormsAuthentication.SignOut(); } FormsAuthentication.SetAuthCookie(username, true); Response.Redirect("~/Register.aspx", true); } } } } if (PageMode == RegistrationPageMode.NotRegistered) { if (!IsPostBack) { RegisteringEasyFreeId.Text = "Registering is easy and FREE!"; LoggedInButNotRegisteredThisYearID.Visible = false; ButtonUpdateOrRegister.Text = "Register"; ButtonRegisterOrUpdate1.Text = "Register"; //ButtonCancelRegistration.Visible = false; //ButtonUnsubscribe.Visible = false; } } if (Context.User.Identity.IsAuthenticated) { int attendeeId = Utils.GetAttendeesIdFromUsername(Context.User.Identity.Name); bool isSpeakingThisYear = Utils.CheckAttendeeIdIsSpeaker(attendeeId); if (isSpeakingThisYear) { if (ConfigurationManager.AppSettings["SpeakerShirtSizes"] != null) { string list = ConfigurationManager.AppSettings["SpeakerShirtSizes"]; char[] splitchar = { ',' }; List<string> newList = list.Split(splitchar).ToList(); DropDownListSpeakerShirtSize.Items.Add("--Not Selected"); foreach (var item in newList) { DropDownListSpeakerShirtSize.Items.Add(new ListItem(item.Trim(), item.Trim())); } } SpeakerShirtSizeDiv.Visible = true; } IDRegistrationInfo.Visible = true; IDAuthenticated.Visible = true; Attendee = AttendeesManager.I.Get(new AttendeesQuery { Id = attendeeId }).FirstOrDefault(); if (Attendee != null && !IsPostBack) { ButtonUpdateOrRegister.Text = GetButtonRegisterOrUpdateText(); ButtonRegisterOrUpdate1.Text = GetButtonRegisterOrUpdateText(); TextBoxPhoneNumber.Text = Attendee.PhoneNumber; TextBoxFalafelEventBoardEmail.Text = Attendee.EmailEventBoard; ListItem listItem = DropDownListSpeakerShirtSize.Items.FindByValue(Attendee.ShirtSize); if (listItem != null) { DropDownListSpeakerShirtSize.SelectedValue = listItem.Value; } CheckBoxAllowEmailFromSpeakerInterested.Checked = Attendee.AllowEmailToSpeakerInterested != null ? Attendee.AllowEmailToSpeakerInterested.Value : false; CheckBoxAllowEmailFromSpeakerPlanToAttend.Checked = Attendee.AllowEmailToSpeakerPlanToAttend != null ? Attendee.AllowEmailToSpeakerPlanToAttend.Value : false; CheckBoxQRPhoneNumber.Checked = Attendee.QRPhoneAllow != null ? Attendee.QRPhoneAllow.Value : false; if (Attendee.EmailSubscription != null) { RadioButtonListEmailSubcription.SelectedIndex = Attendee.EmailSubscription.Value; } else { Attendee.EmailSubscription = (int) EmailSubscriptionEnum.AllEmails; RadioButtonListEmailSubcription.SelectedIndex = 0; } LabelEmailStatusMessage.Text = Attendee.EmailSubscriptionStatus; if (Attendee.EmailSubscription == 2) { LabelEmailBouncing.Visible = true; } } // Need to see if person already registered for this year. If so, then take them to profile page var attendeesCodeCampYearResult = AttendeesCodeCampYearManager.I.Get(new AttendeesCodeCampYearQuery() { AttendeesId = attendeeId, CodeCampYearId = Utils.CurrentCodeCampYear }).FirstOrDefault(); // keep value from being overwritten when autopostback true happens. if (attendeesCodeCampYearResult != null && !IsPostBack) { CheckBoxSaturday.Checked = attendeesCodeCampYearResult.AttendSaturday; CheckBoxSunday.Checked = attendeesCodeCampYearResult.AttendSunday; CheckBoxVolunteer.Checked = attendeesCodeCampYearResult.Volunteer ?? false; } else if (CheckBoxUnableToAttend.Checked) { CheckBoxSaturday.Checked = false; CheckBoxSunday.Checked = false; var rec = AttendeesCodeCampYearManager.I.Get(new AttendeesCodeCampYearQuery() { AttendeesId = attendeeId, CodeCampYearId = Utils.CurrentCodeCampYear, }).FirstOrDefault(); if (rec != null) { AttendeesCodeCampYearManager.I.Delete(rec.Id); } PageMode = RegistrationPageMode.UpdateNotRegisteredThisYear; } if (PageMode == RegistrationPageMode.UpdateNotRegisteredThisYear) { RegisteringEasyFreeId.Text = "Update Your Profile For This Year Now!"; LoggedInButNotRegisteredThisYearID.Visible = true; //ButtonCancelRegistration.Visible = false; //ButtonUnsubscribe.Visible = true; } else if (PageMode == RegistrationPageMode.UpdateRegisteredThisYear) { RegisteringEasyFreeId.Text = "Update Your Profile!"; LoggedInButNotRegisteredThisYearID.Visible = false; //ButtonCancelRegistration.Visible = true; //ButtonUnsubscribe.Visible = true; } //// check if person has sessions. If so, then make CheckBoxSpeakerDDL default ot Yes //List<int> allSessionIdsByAttendeeId = // SessionPresenterManager.I.Get(new SessionPresenterQuery() // { // AttendeeId = attendeeId // }).Select(a => a.SessionId).ToList(); //int sessionsThisYearCnt = SessionsManager.I.Get( // new SessionsQuery // { // Ids = allSessionIdsByAttendeeId // }).Count; if (isSpeakingThisYear) { CheckBoxSpeakerDDL.SelectedIndex = 0; // first choice is YES } if (!IsPostBack) { CaptchaUltimateControl1.DataBind(); } } else { IDRegistrationInfo.Visible = true; IDAuthenticated.Visible = false; //CaptchaUltimateControl1.Visible = true; //LoginStatus1.Visible = false; //ShowMessage.Visible = true; } // check and see if a referral URL is coming in. If so, keep it for adding // to user account try { if (Request.QueryString["Referral"] != null) { string referralPKIDString = Request.QueryString["Referral"]; var referralGuid = new Guid(referralPKIDString); Items["ReferralGuid"] = referralGuid; } else if (Session["ReferralGuid"] != null) { Items["ReferralGuid"] = (Guid) Session["ReferralGuid"]; } } catch (Exception ee) { throw new ApplicationException(ee.ToString()); } //FileUpload fileUpload = (FileUpload) CaptchaUltimateControl1.FindControl("FileUpload1"); //string str = fileUpload.FileName; //string str1 = fileUpload. //if (Context.User.Identity.IsAuthenticated) //{ // int attendeeId = Utils.GetAttendeesIdFromUsername(Context.User.Identity.Name); // AttendeesResult attendeeResultRec = // AttendeesManager.I.Get(new AttendeesQuery() {Id = attendeeId}).FirstOrDefault(); // if (attendeeResultRec != null) // { // int totalRecs = (EmailOptOutManager.I.Get( // new EmailOptOutQuery() // { // Email = attendeeResultRec.Email // })).Count; // if (totalRecs > 0) // { // ButtonReSubscribe.Visible = true; // ButtonUnsubscribe.Visible = false; // } // else // { // ButtonReSubscribe.Visible = false; // ButtonUnsubscribe.Visible = true; // } // } //} }
public HttpResponseMessage PostForgotPassword(AttendeesResult attendeesResult) { HttpResponseMessage response; string usernameOrEmail = attendeesResult.Username; string username = Utils.GetUsernameFromEmail(usernameOrEmail); if (String.IsNullOrEmpty(username)) { string goodEmail = Utils.GetEmailFromUsername(usernameOrEmail); username = Utils.GetUsernameFromEmail(goodEmail); } if (String.IsNullOrEmpty(username)) { response = Request.CreateErrorResponse(HttpStatusCode.ExpectationFailed, "Name not found as either username or email. Please register as new attendee"); } else { var attendeeRec = AttendeesManager.I.Get(new AttendeesQuery {Username = username}).FirstOrDefault(); if (attendeeRec == null) { throw new ApplicationException("attendeeRec could not be loaded"); } MembershipUser mu = Membership.GetUser(username); if (mu == null) { throw new ApplicationException("MembershipUser mu not found"); } var newPassword = mu.ResetPassword(); var msg = new EmailMessage(true, false) { Logging = false, LogOverwrite = false, //LogPath = Context.Server.MapPath(String.Empty) + "\\App_Data\\EmailPasswordRecovery.log", FromAddress = Utils.GetServiceEmailAddress(), To = attendeeRec.Email, Subject = "Your New Password For http://www.siliconvalley-codecamp.com" }; if (msg.Server.Equals("smtp.gmail.com")) { var ssl = new AdvancedIntellect.Ssl.SslSocket(); msg.LoadSslSocket(ssl); msg.Port = 587; } var sb = new StringBuilder(); sb.AppendLine( String.Format("Please log in to your codecamp account ({0}) with the new password: {1}", username, newPassword)); sb.AppendLine(" "); sb.AppendLine("We suggest that after you log in, you change your password."); sb.AppendLine("We store your password in an encrypted format which is"); sb.AppendLine("why we are unable to send you your original password."); sb.AppendLine(" "); sb.AppendLine("We are looking forward to seeing you at camp!"); sb.AppendLine(" "); sb.AppendLine("Best Regards,"); sb.AppendLine(""); sb.AppendLine("http://www.siliconvalley-codecamp.com"); msg.Body = sb.ToString(); try { msg.Send(); response = Request.CreateResponse(HttpStatusCode.OK, new AttendeesResult() { Email = attendeeRec.Email, Username = attendeeRec.Username, Id = attendeeRec.Id }); } catch (Exception e) { response = Request.CreateErrorResponse(HttpStatusCode.ExpectationFailed, "We found your account but email could not be delivered to " + attendeeRec.Email + " for account " + attendeeRec.Username + ". Please Make a new account or contact [email protected] and we will reset the password for you."); } } return response; }
private AttendeesResult MakeSafeAttendee(AttendeesResult attendeesResultFull) { attendeesResultFull.ApplicationName = ""; attendeesResultFull.FullNameUsernameZipcode = ""; attendeesResultFull.PKID = Guid.Empty; attendeesResultFull.Password = ""; attendeesResultFull.PasswordAnswer = ""; attendeesResultFull.PasswordQuestion = ""; attendeesResultFull.UserImage = null; return attendeesResultFull; }
private HttpResponseMessage UpdateAttendeeRecordParts(AttendeesResult attendeeRecord, string attendeeSaveOption) { HttpResponseMessage response; if (!User.Identity.IsAuthenticated) { response = Request.CreateErrorResponse(HttpStatusCode.Forbidden, "User Not Logged In So Update Forbidden"); } else { var attendeesResult = AttendeesManager.I.Get(new AttendeesQuery { Username = User.Identity.Name, CodeCampYearId = Utils.CurrentCodeCampYear, IncludeAttendeesCodeCampYearResult = true }).FirstOrDefault(); if (attendeesResult != null) { // if attempting to change password then stop them here if problem if (!String.IsNullOrEmpty(attendeesResult.Password1) && (!attendeesResult.Password1.Equals(attendeesResult.Password2))) { response = Request.CreateErrorResponse(HttpStatusCode.ExpectationFailed, "If password entered, password and confirmation must be identical"); } else { if (attendeeSaveOption.ToLower().Equals("optin")) { attendeesResult.OptInSponsorSpecialsLevel = attendeeRecord.OptInSponsorSpecialsLevel; attendeesResult.OptInSponsoredMailingsLevel = attendeeRecord.OptInSponsoredMailingsLevel; attendeesResult.OptInTechJobKeyWords = attendeeRecord.OptInTechJobKeyWords; attendeesResult.OptInSvccKids = attendeeRecord.OptInSvccKids; } else { // These are the only fields that can get updated by the caller (security) // (for both speaker and attendee) attendeesResult.Email = attendeeRecord.Email; attendeesResult.UserFirstName = attendeeRecord.UserFirstName; attendeesResult.UserLastName = attendeeRecord.UserLastName; attendeesResult.City = attendeeRecord.City; attendeesResult.State = attendeeRecord.State; attendeesResult.UserZipCode = attendeeRecord.UserZipCode; attendeesResult.TwitterHandle = attendeeRecord.TwitterHandle; attendeesResult.AttendingDaysChoiceCurrentYear = attendeeRecord.AttendingDaysChoiceCurrentYear; attendeesResult.RegisteredCurrentYear = attendeeRecord.RegisteredCurrentYear; attendeesResult.PhoneNumber = attendeeRecord.PhoneNumber; attendeesResult.EmailEventBoard = attendeeRecord.EmailEventBoard; attendeesResult.VolunteeredCurrentYear = attendeeRecord.VolunteeredCurrentYear; attendeesResult.PrincipleJob = attendeeRecord.PrincipleJob; attendeesResult.Company = attendeeRecord.Company; // speaker stuff below if (attendeeSaveOption.ToLower().Equals("speaker")) { attendeesResult.FacebookId = attendeeRecord.FacebookId; attendeesResult.GooglePlusId = attendeeRecord.GooglePlusId; attendeesResult.LinkedInId = attendeeRecord.LinkedInId; attendeesResult.ShirtSize = attendeeRecord.ShirtSize; attendeesResult.UserBio = attendeeRecord.UserBio; } } attendeesResult.CurrentCodeCampYear = Utils.CurrentCodeCampYear; AttendeesManager.I.UpdateWithAttendeeCCY(attendeesResult); response = Request.CreateResponse(HttpStatusCode.OK, MakeSafeAttendee(attendeesResult)); } } else { response = Request.CreateErrorResponse(HttpStatusCode.Forbidden, "User Authenticated but no base attendee record found"); } } return response; }
public HttpResponseMessage PostCreateUser(AttendeesResult attendee) { HttpResponseMessage response; if (!ConfigurationManager.AppSettings["OverrideCaptcha"].ToLower().Equals("true") && !HttpContext.Current.Request.IsAuthenticated) { // First, verif captcha string clientAddress = HttpContext.Current.Request.UserHostAddress; string message; if ( !VerifyRecaptcha(attendee.RecaptchaChallengeField, attendee.RecaptchaResponseField, clientAddress, out message)) { response = Request.CreateErrorResponse(HttpStatusCode.ExpectationFailed, message); return response; } } if (String.IsNullOrEmpty(attendee.Username) || String.IsNullOrEmpty(attendee.Password) || String.IsNullOrEmpty(attendee.Email)) { response = Request.CreateErrorResponse(HttpStatusCode.Forbidden, "CreateUser requires non blank Username,Password and Email"); } else if (attendee.Password.Length < 4) { response = Request.CreateErrorResponse(HttpStatusCode.Forbidden, "CreateUser requires password at least 4 characters long"); } else { // now we have username, password and email bool emailExists = AttendeesManager.I.CheckAttendeeEmailExists(attendee.Email); bool usernameExists = AttendeesManager.I.CheckAttendeeEmailExists(attendee.Username); if (emailExists || usernameExists) { response = Request.CreateErrorResponse(HttpStatusCode.Forbidden, string.Format( "CreateUser email or username exists so can not create {0}:{1}", emailExists.ToString(), usernameExists.ToString())); } else { // create the user! everything should be good MembershipCreateStatus mStatus; Membership.CreateUser( attendee.Username, attendee.Password, attendee.Email, "Question", "Answer", true, out mStatus); if (mStatus.Equals(MembershipCreateStatus.Success)) { FormsAuthentication.SetAuthCookie(attendee.Username, true); // for now update counts var attendeeNew = AttendeesManager.I.Get(new AttendeesQuery() { Username = attendee.Username }).FirstOrDefault(); if (attendeeNew != null) { attendeeNew.PresentationLimit = 3; attendeeNew.PresentationApprovalRequired = false; AttendeesManager.I.Update(attendeeNew); } response = Request.CreateResponse(HttpStatusCode.OK, attendeeNew); } else { response = Request.CreateErrorResponse(HttpStatusCode.Forbidden, "CreateUser membership failed " + mStatus.ToString()); } } } return response; }
public HttpResponseMessage PostUpdateOptIn(AttendeesResult attendeeRecord) { return UpdateAttendeeRecordParts(attendeeRecord, "optin"); }
public HttpResponseMessage PostUpdateAttendee(AttendeesResult attendeeRecord) { //return Request.CreateErrorResponse(HttpStatusCode.ExpectationFailed,"test bad responose from PostUpdateAttendee"); return UpdateAttendeeRecordParts(attendeeRecord, "attendee"); }
public HttpResponseMessage PostUpdateSpeaker(AttendeesResult attendeeRecord) { return UpdateAttendeeRecordParts(attendeeRecord, "speaker"); }
public HttpResponseMessage PostCheckUsernameEmailExists(AttendeesResult attendeeRecord) { Thread.Sleep(300); // try to defend a little against denial of service attack or username searching attack var errorMessage = new StringBuilder(); if (String.IsNullOrEmpty(attendeeRecord.Username) && String.IsNullOrEmpty(attendeeRecord.Email)) { errorMessage.Append("Failure: Must specify username, email or both in incoming parameters."); } else if (!String.IsNullOrEmpty(attendeeRecord.Username) && String.IsNullOrEmpty(attendeeRecord.Email)) { bool attendeeUsernameExists = AttendeesManager.I.CheckAttendeeUsernameExists(attendeeRecord.Username); if (attendeeUsernameExists) { errorMessage.Append("Failure: Username Exists."); } } else if (String.IsNullOrEmpty(attendeeRecord.Username) && !String.IsNullOrEmpty(attendeeRecord.Email)) { bool attendeeEmailExists = AttendeesManager.I.CheckAttendeeEmailExists(attendeeRecord.Username); if (attendeeEmailExists) { errorMessage.Append("Failure: Email Exists."); } } else if (!String.IsNullOrEmpty(attendeeRecord.Username) && !String.IsNullOrEmpty(attendeeRecord.Email)) { bool attendeeUsernameExists = AttendeesManager.I.CheckAttendeeUsernameExists(attendeeRecord.Username); bool attendeeEmailExists = AttendeesManager.I.CheckAttendeeEmailExists(attendeeRecord.Username); if (attendeeEmailExists || attendeeUsernameExists) { if (attendeeEmailExists) { errorMessage.Append("Failure: Email Exists."); } if (attendeeUsernameExists) { errorMessage.Append("Failure: Username Exists"); } } } return errorMessage.Length == 0 ? Request.CreateResponse(HttpStatusCode.OK, "") : Request.CreateErrorResponse(HttpStatusCode.Forbidden, errorMessage.ToString()); }
public HttpResponseMessage PostCheckPictureExists(AttendeesResult attendeeRecord) { Thread.Sleep(300); // try to defend a little against denial of service attack or username searching attack var errorMessage = new StringBuilder(); if (attendeeRecord == null || attendeeRecord.Id <= 0) { return Request.CreateErrorResponse(HttpStatusCode.Forbidden, "PostCheckPictureExists: attendeeRecord no passed in populated"); } var pictureLen = Utils.GetPictureLengthByAttendee(attendeeRecord.Id); return pictureLen > 0 ? Request.CreateResponse(HttpStatusCode.OK, "") : Request.CreateErrorResponse(HttpStatusCode.Forbidden, "picture length for attendee zero"); }
/// <summary> /// only create a URL if this person is really a speaker for the given year /// </summary> /// <param name="speaker"></param> /// <param name="query"></param> /// <returns></returns> private static string CreateSpeakerLocalUrl(AttendeesResult speaker,AttendeesQuery query) { var retStr = "NOT SPEAKER"; if (query.PresentersOnly.HasValue && query.PresentersOnly.Value && query.CodeCampYearIds != null && query.CodeCampYearIds.Count == 1) { retStr = String.Format("/Presenter/{0}/{1}-{2}-{3}", Utils.ConvertCodeCampYearToActualYear( query.CodeCampYearIds[0].ToString(CultureInfo.InvariantCulture)), speaker.UserFirstName, speaker.UserLastName, speaker.Id); } return retStr; }
public void UpdateWithAttendeeCCY(AttendeesResult attendeesResult) { base.Update(attendeesResult); if (!attendeesResult.CurrentCodeCampYear.HasValue) { throw new ApplicationException("IncludeAttendeesCodeCampYearResult seet on AttendeesManager but CurrentCodeCampYear Not also set and is required"); } var rec = AttendeesCodeCampYearManager.I.Get(new AttendeesCodeCampYearQuery { AttendeesId = attendeesResult.Id, CodeCampYearId = attendeesResult.CurrentCodeCampYear }).FirstOrDefault(); if (rec != null) { rec.Volunteer = attendeesResult.VolunteeredCurrentYear; rec.AttendingDaysChoice = attendeesResult.AttendingDaysChoiceCurrentYear; AttendeesCodeCampYearManager.I.Update(rec); } else { var newRec = new AttendeesCodeCampYearResult() { CreateDate = DateTime.Now, CodeCampYearId = attendeesResult.CurrentCodeCampYear.Value, Volunteer = attendeesResult.VolunteeredCurrentYear, AttendingDaysChoice = attendeesResult.AttendingDaysChoiceCurrentYear, AttendeesId = attendeesResult.Id }; AttendeesCodeCampYearManager.I.Insert(newRec); } }