protected void loginButton_ServerClick(object sender, EventArgs e) { var _email = email.Value; var _password = password.Value; DatabaseEntities db = new DatabaseEntities(); EndUser user = null; try { try { user = db.EndUser.First(eu => eu.email == _email && eu.password == _password && eu.active == true); } catch { throw new SessionException(); } /* set up session */ Session.Add("userId", user.id.ToString()); Session.Add("firstName", user.firstName); Session.Add("userType", user.type); Session.Add("profilePicture", user.profilePicturePath); Session.Timeout = 60; /* set up cookies for current login */ Response.Cookies["login"]["userId"] = user.id.ToString(); Response.Cookies["login"]["firstName"] = user.firstName; Response.Cookies["login"]["userType"] = user.type; Response.Cookies["login"]["profilePicture"] = user.profilePicturePath; Response.Cookies["login"].Expires = DateTime.Now.AddDays(30); if (user.type == "teacher") { Response.Redirect("/teacher_quizzes/all_quizzes.aspx"); } else { Response.Redirect("/student_quizzes/open_quizzes.aspx"); } } catch (Exception exception) { if (exception is System.Threading.ThreadAbortException) { return; // safely ignore this exception } var message = ""; if (exception is SessionException) { message = "Invalid email or password, please try again!<br>"; message += "Don't have an account? Please "; message += "<a href='/signup.aspx'>Sign Up</a>!"; } else { message = "Something went wrong!"; } loginErrors.InnerHtml = message; loginErrors.Visible = true; } }
/* handle the submission of form */ protected void signUpSubmit_ServerClick(object sender, EventArgs e) { var Sender = (Button)sender; signupMessages.Visible = false; signupErrors.Visible = false; String loginLink = "<span><a href='/login.aspx'>Login</a></span>"; DatabaseEntities db = new DatabaseEntities(); var user = db.EndUser.FirstOrDefault(eu => eu.email == email.Text); if (user == null) { user = new EndUser(); } /* user already exist */ if ((user.email == email.Text && Sender.CommandName != "update") || (user.email == email.Text && Sender.CommandName == "update" && email.Text != Sender.CommandArgument)) { String _message = "This email is already registered with us. Please choose another!"; signupErrors.InnerHtml = _message; signupErrors.Visible = true; return; } /* user password is invalid - in case of update */ if (Sender.CommandName == "update") { var originalUser = db.EndUser.First(eu => eu.email == Sender.CommandArgument); if (oldPassword.Value != originalUser.password) { signupErrors.InnerText = "Invalid old password!"; signupErrors.Visible = true; return; } } /* check image type - if file uploaded */ if (isProfilePictureSet.Value == "true" && profilePictureFileUpload.HasFile) { if (profilePictureFileUpload.PostedFile.ContentType != "image/png") { signupErrors.InnerText = "Only png files are supported as profile picture!"; signupErrors.Visible = true; return; } } try { user.email = email.Text; user.password = password.Value; user.firstName = firstName.Text; user.secondName = secondName.Text; user.countryCode = country.SelectedValue; user.city = city.Text; user.active = true; user.profilePicturePath = profilePicture.Src; user.gender = "Female"; if (male.Checked) { user.gender = "Male"; } if (unspecified.Checked) { user.gender = "Unspecified"; } if (teacher.Checked) { user.type = "teacher"; } else { user.type = "student"; } if (Sender.CommandName != "update") { db.EndUser.Add(user); } db.SaveChanges(); /* set profile picture - if user added */ if (isProfilePictureSet.Value == "true") { if (profilePictureFileUpload.HasFile) { var fileInfo = new FileInfo(profilePictureFileUpload.PostedFile.FileName); var path = "/resources/images/profile_pictures/custom/" + user.id + fileInfo.Extension; profilePictureFileUpload.PostedFile.SaveAs(Server.MapPath("~" + path)); user.profilePicturePath = path; } db.SaveChanges(); } if (teacher.Checked) { var _teacher = db.Teacher.FirstOrDefault(t => t.userId == user.id); if (_teacher == null) { _teacher = new Teacher(); } _teacher.speciality = speciality.Text; _teacher.userId = user.id; if (Sender.CommandName != "update") { db.Teacher.Add(_teacher); } db.SaveChanges(); } else { var _student = db.Student.FirstOrDefault(s => s.userId == user.id); if (_student == null) { _student = new Student(); } _student.userId = user.id; if (Sender.CommandName != "update") { db.Student.Add(_student); } db.SaveChanges(); } } catch (Exception err) { var _message = "Something went wrong!"; signupErrors.InnerText = _message; signupErrors.Visible = true; return; } if (Sender.CommandName == "update") { Session["userId"] = user.id.ToString(); Session["userType"] = user.type; Session["firstName"] = user.firstName; Session["profilePicture"] = user.profilePicturePath; Response.Cookies["login"]["userId"] = user.profilePicturePath; Response.Cookies["login"]["firstName"] = user.profilePicturePath; Response.Cookies["login"]["userType"] = user.profilePicturePath; Response.Cookies["login"]["profilePicture"] = user.profilePicturePath; Response.Redirect("/profile/profile.aspx?updated=true"); } var message = "Your account has been successfully created!"; message += "Please " + loginLink + " to continue."; signupMessages.Visible = true; signupMessages.InnerHtml = message; }