Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
94dbe14
first commit
Nov 14, 2022
55eaf5b
Updated users table to have unique usernames and emails.
Nov 14, 2022
93ebab9
updated database tables and Maven.
5T0P5331N6M3 Nov 14, 2022
d5e414c
updated for users where they can only have unique username and email
yogesh-adhikari Nov 14, 2022
44ffdf9
Completed new navbar when user is logged in.
5T0P5331N6M3 Nov 14, 2022
c6a9935
Created jsps for various navbars per particular page(s).
5T0P5331N6M3 Nov 14, 2022
baa5ca9
added navbar for register jsp.
5T0P5331N6M3 Nov 14, 2022
fcb494d
Completed creating navbars for separate jsps.
5T0P5331N6M3 Nov 14, 2022
35d2def
saving update functionality progress
Nov 14, 2022
f5f35f1
Working on Individual Ad Servlet and ad.jsp for each ad.
5T0P5331N6M3 Nov 14, 2022
7e0d686
Delete method added
yogesh-adhikari Nov 15, 2022
8fe8fb7
Completed creating a page for each ad clicked on.
5T0P5331N6M3 Nov 15, 2022
6518e11
Working on User profile ads to pop up once logged in to any user
leeCarter25 Nov 15, 2022
927062b
added search bar to navbar-ads-index.jsp.
5T0P5331N6M3 Nov 15, 2022
c380068
Merge pull request #1 from adlister-yogesh-vince-christian-cas/casano…
5T0P5331N6M3 Nov 15, 2022
5d482dd
Merge branch 'master' into christian-carter
leeCarter25 Nov 15, 2022
9e1106e
Merge pull request #2 from adlister-yogesh-vince-christian-cas/christ…
leeCarter25 Nov 15, 2022
82a0519
Update functionality saved
Nov 15, 2022
9317f34
delete ads method added
yogesh-adhikari Nov 15, 2022
67a6405
fixed conflicts
Nov 15, 2022
44c6eca
refactored profile.jsp, adding href.
5T0P5331N6M3 Nov 15, 2022
4cd5e25
Merge pull request #3 from adlister-yogesh-vince-christian-cas/casano…
5T0P5331N6M3 Nov 15, 2022
938de04
Merge branch 'master' of github.com:adlister-yogesh-vince-christian-c…
Nov 15, 2022
c7e614c
fixed merge conflict
yogesh-adhikari Nov 15, 2022
36bffb9
Merge branch 'master' of github.com:adlister-yogesh-vince-christian-c…
yogesh-adhikari Nov 15, 2022
5173822
update
yogesh-adhikari Nov 15, 2022
5160bdd
delete method added, User can delete their add from profile
yogesh-adhikari Nov 15, 2022
5d655f2
fixed merge conflicts
Nov 15, 2022
78f4035
Update functionality tested and completed.
Nov 16, 2022
9df4488
Merge pull request #4 from adlister-yogesh-vince-christian-cas/vicent…
pledgeofallegiance Nov 16, 2022
117d28c
users can now update their profile information
Nov 16, 2022
e04bc94
Merge pull request #5 from adlister-yogesh-vince-christian-cas/vicent…
pledgeofallegiance Nov 16, 2022
c2f6180
working on serach function
yogesh-adhikari Nov 16, 2022
d174a5d
Merge branch 'master' of github.com:adlister-yogesh-vince-christian-c…
yogesh-adhikari Nov 16, 2022
da46f35
login pop up wrong password alert
leeCarter25 Nov 16, 2022
850563b
Merge pull request #6 from adlister-yogesh-vince-christian-cas/christ…
5T0P5331N6M3 Nov 16, 2022
4d97656
Added validating input before submitting created ad, else page stays …
5T0P5331N6M3 Nov 16, 2022
3a9374b
Conmpleted user input validation for updating profile.
5T0P5331N6M3 Nov 17, 2022
198de0e
search function added
yogesh-adhikari Nov 17, 2022
c5c8ae6
Merge pull request #7 from adlister-yogesh-vince-christian-cas/adlist…
5T0P5331N6M3 Nov 17, 2022
0b742c5
Completed user input validation for register.
5T0P5331N6M3 Nov 17, 2022
26f573a
Merge pull request #8 from adlister-yogesh-vince-christian-cas/casano…
5T0P5331N6M3 Nov 17, 2022
aeebf6d
user can now delete profile
Nov 17, 2022
efbea1c
users can delete their profile
Nov 17, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions migration.sql
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ DROP TABLE IF EXISTS users;

CREATE TABLE users (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
username VARCHAR(240) NOT NULL,
email VARCHAR(240) NOT NULL,
username VARCHAR(240) NOT NULL UNIQUE,
email VARCHAR(240) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
Expand All @@ -20,3 +20,4 @@ CREATE TABLE ads (
FOREIGN KEY (user_id) REFERENCES users(id)
ON DELETE CASCADE
);

7 changes: 4 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,12 @@
<dependency>
<groupId>org.mindrot</groupId>
<artifactId>jbcrypt</artifactId>
<version>0.3m</version>
<version>0.4</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
Expand All @@ -42,8 +42,9 @@
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.5</version>
<version>8.0.31</version>
</dependency>
</dependencies>


</project>
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,10 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t
request.setAttribute("ads", DaoFactory.getAdsDao().all());
request.getRequestDispatcher("/WEB-INF/ads/index.jsp").forward(request, response);
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
long id = Long.parseLong(req.getParameter("id"));
resp.sendRedirect("/ads/update?id=" + id);
}
}
28 changes: 20 additions & 8 deletions src/main/java/com/codeup/adlister/controllers/CreateAdServlet.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,26 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t
.forward(request, response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
User user = (User) request.getSession().getAttribute("user");
Ad ad = new Ad(
user.getId(),
request.getParameter("title"),
request.getParameter("description")
);
DaoFactory.getAdsDao().insert(ad);
response.sendRedirect("/ads");

String title = request.getParameter("title");
String description = request.getParameter("description");
boolean invalidAdInput = title.isEmpty() || description.isEmpty();
if (invalidAdInput)
{
request.setAttribute("inputIsNull", true);
request.getRequestDispatcher("/WEB-INF/ads/create.jsp").forward(request, response);
} else
{
Ad ad = new Ad(
user.getId(),
request.getParameter("title"),
request.getParameter("description")
);
DaoFactory.getAdsDao().insert(ad);
response.sendRedirect("/ads");
}

}
}
25 changes: 25 additions & 0 deletions src/main/java/com/codeup/adlister/controllers/DeleteAdServlet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.codeup.adlister.controllers;

import com.codeup.adlister.dao.DaoFactory;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "DeleteAdServlet", urlPatterns = "/ads/delete")
public class DeleteAdServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
if (req.getSession().getAttribute("user") != null) {
long adId = Long.parseLong(req.getParameter("id"));
DaoFactory.getAdsDao().delete(adId);
resp.sendRedirect("/profile");
} else {
resp.sendRedirect("/login");
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.codeup.adlister.controllers;

import com.codeup.adlister.dao.DaoFactory;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "DeleteUserServlet", urlPatterns = "/profile/delete")
public class DeleteUserServlet extends HttpServlet {

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Long userId = Long.valueOf(request.getParameter("userId"));
DaoFactory.getUsersDao().deleteUser(userId);
if (request.getSession().getAttribute("user") == null) {
response.sendRedirect("/login");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,10 @@
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "controllers.HelloWorldServlet", urlPatterns = "/")
@WebServlet(name = "HelloWorldServlet", urlPatterns = "/hello")
public class HelloWorldServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.getWriter().println("<h1>Hello, World!</h1>");
return;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.codeup.adlister.controllers;

import com.codeup.adlister.dao.DaoFactory;
import com.codeup.adlister.models.Ad;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "controllers.IndividualAdServlet", urlPatterns = "/ad")
public class IndividualAdServlet extends HttpServlet
{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
long id = Long.parseLong(req.getParameter("id"));
Ad ad = DaoFactory.getAdsDao().findById(id);
req.setAttribute("singleAd", ad);
req.getRequestDispatcher("/WEB-INF/ad.jsp").forward(req, resp);
}
}
19 changes: 15 additions & 4 deletions src/main/java/com/codeup/adlister/controllers/LoginServlet.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,31 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t
response.sendRedirect("/profile");
return;
}



request.getRequestDispatcher("/WEB-INF/login.jsp").forward(request, response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
String username = request.getParameter("username");
String password = request.getParameter("password");
User user = DaoFactory.getUsersDao().findByUsername(username);

if (user == null) {
response.sendRedirect("/login");
boolean validAttempt = Password.check(password, user.getPassword());

boolean notCorrectPassword = !Password.check(password, user.getPassword());




if(notCorrectPassword) {
request.setAttribute("password", true);
request.getRequestDispatcher("/WEB-INF/login.jsp").forward(request, response);
return;
}

boolean validAttempt = Password.check(password, user.getPassword());


if (validAttempt) {
request.getSession().setAttribute("user", user);
Expand Down
27 changes: 15 additions & 12 deletions src/main/java/com/codeup/adlister/controllers/RegisterServlet.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,29 +13,32 @@
@WebServlet(name = "controllers.RegisterServlet", urlPatterns = "/register")
public class RegisterServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


request.getRequestDispatcher("/WEB-INF/register.jsp").forward(request, response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
String username = request.getParameter("username");
String email = request.getParameter("email");
String password = request.getParameter("password");
String passwordConfirmation = request.getParameter("confirm_password");

// validate input
boolean inputHasErrors = username.isEmpty()
|| email.isEmpty()
|| password.isEmpty()
|| (! password.equals(passwordConfirmation));
|| email.isEmpty()
|| password.isEmpty()
|| (!password.equals(passwordConfirmation));


if (inputHasErrors) {
response.sendRedirect("/register");
return;
request.setAttribute("inputHasErrors", true);
request.getRequestDispatcher("/WEB-INF/register.jsp").forward(request, response);
} else {
// create and save a new user
User user = new User(username, email, password);
DaoFactory.getUsersDao().insert(user);
response.sendRedirect("/login");
}

// create and save a new user
User user = new User(username, email, password);
DaoFactory.getUsersDao().insert(user);
response.sendRedirect("/login");
}
}
}
23 changes: 23 additions & 0 deletions src/main/java/com/codeup/adlister/controllers/SearchAdServlet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.codeup.adlister.controllers;

import com.codeup.adlister.dao.DaoFactory;
import com.codeup.adlister.models.Ad;
import com.codeup.adlister.models.User;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebServlet( name = "SearchAdServlet", urlPatterns = "/ads/search")
public class SearchAdServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<Ad> ads = DaoFactory.getAdsDao().search(request.getParameter("title"));
request.setAttribute("ads", ads);
request.getRequestDispatcher("/WEB-INF/ads/result.jsp").forward(request, response);

}
}
42 changes: 42 additions & 0 deletions src/main/java/com/codeup/adlister/controllers/UpdateAdServlet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.codeup.adlister.controllers;

import com.codeup.adlister.dao.DaoFactory;
import com.codeup.adlister.models.Ad;
import com.codeup.adlister.models.User;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "controllers.UpdateAdServlet", urlPatterns = "/ads/update")
public class UpdateAdServlet extends HttpServlet {

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if (request.getSession().getAttribute("user") == null) {
response.sendRedirect("/login");
return;
}

request.setAttribute("adId", request.getParameter("id"));
request.getRequestDispatcher("/WEB-INF/ads/update.jsp").forward(request, response);
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// Storing user input values from update form.
String title = request.getParameter("title");
String description = request.getParameter("description");
Long id = Long.valueOf(request.getParameter("adId"));


// Using DAO factory to access our update method.
DaoFactory.getAdsDao().updateAd(id, title, description);

// Redirecting user to ads page after submitting update form.
response.sendRedirect("/ads");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package com.codeup.adlister.controllers;

import com.codeup.adlister.dao.DaoFactory;
import com.codeup.adlister.util.Password;

import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "UpdateProfileServlet", urlPatterns = "/profile/update")
public class UpdateProfileServlet extends HttpServlet {

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// Setting attribute with the value of userId in url string query.
request.setAttribute("userId", request.getParameter("userId"));
request.getRequestDispatcher("/WEB-INF/update-profile.jsp").forward(request, response);
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Storing user input values from update profile form.
Long id = Long.valueOf(request.getParameter("userId"));
String username = request.getParameter("username");
String email = request.getParameter("email");
String password = request.getParameter("password");

password = Password.hash(password);

boolean invalidInput = username.isEmpty() || email.isEmpty() || password.isEmpty();
if (invalidInput)
{
request.setAttribute("inputIsNull", true);
request.getRequestDispatcher("/WEB-INF/profile/update.jsp").forward(request, response);
} else
{
// Accessing DAO to implement update users method.
DaoFactory.getUsersDao().updateUser(id, username, email, password);
// Redirecting them to login again.
response.sendRedirect("/login");
}

}
}
Loading