Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
122 commits
Select commit Hold shift + click to select a range
569201d
initial commit
zgulde Dec 2, 2016
eff71ff
add hello world message
zgulde Dec 2, 2016
7a638aa
add counter servlet for /count
zgulde Dec 2, 2016
ff382d9
increase and display count when /count is visited
zgulde Dec 2, 2016
d3fff7c
add jstl dependency and example jsp page
zgulde Dec 2, 2016
bc7e559
add and include html template partials
zgulde Dec 2, 2016
2dc9ea2
add login and profile jsps
zgulde Dec 5, 2016
34bd264
check credentials when form is submitted
zgulde Dec 5, 2016
3604f19
add Ads interface and DAO implementation
zgulde Dec 2, 2016
f911119
show profile page from servlet
zgulde Dec 6, 2016
b034c36
move credential validation to servlet
zgulde Dec 6, 2016
1d22d9c
show all ads on ads index page
zgulde Dec 2, 2016
abc5b15
track login status
zgulde Dec 6, 2016
7b547d5
remove jsps from direct public access
zgulde Dec 7, 2016
a3fef90
insert ads in list dao
zgulde Dec 8, 2016
7293272
ad creation functionality
zgulde Dec 8, 2016
a20fe81
add mysql driver dependency
zgulde Dec 8, 2016
a7c1361
add migration script
zgulde Dec 6, 2016
70f7bd8
implement mysql ads dao
zgulde Dec 8, 2016
8e52d36
split project into packages
zgulde Dec 9, 2016
b4e9485
move configuration to external class
zgulde Dec 8, 2016
ed7b626
add users interface and model
zgulde Dec 9, 2016
fa01b25
plan out backend logic for user creation + login
zgulde Dec 9, 2016
844d3cd
use prepared statements for ad creation
zgulde Dec 9, 2016
66260b8
implement mysql users dao
zgulde Dec 9, 2016
ed6be17
add registration form
zgulde Dec 9, 2016
dbd48dd
persist users to database after registration
zgulde Dec 9, 2016
32c5dd5
check user credentials against database records
zgulde Dec 9, 2016
7a0c40f
store logged in user in the session
zgulde Dec 9, 2016
3aae064
add bcrypt dependency
zgulde Dec 9, 2016
35c03c6
add password utility class
zgulde Dec 9, 2016
84ca652
hash passwords
zgulde Dec 9, 2016
7249672
verify password hashes when logging in
zgulde Dec 9, 2016
f32e5ef
only allow ad creation if a user is logged in
zgulde Dec 9, 2016
5a8a0a5
update mysql connector
Nathan-Haustveit May 6, 2022
38ced44
Merge pull request #1 from SA-lister/pom-update
Nathan-Haustveit May 6, 2022
dca6641
complete migration and seeder filesbased on group planning
c-berry May 7, 2022
4af4ba4
Merge pull request #2 from SA-lister/mysql-migration-seeder
c-berry May 7, 2022
e67985e
update seeder users profiles with hashed passwords
c-berry May 9, 2022
631138e
updated jbcrypt and javax versions
Nathan-Haustveit May 9, 2022
e221926
Merge pull request #3 from SA-lister/pom-update
Nathan-Haustveit May 9, 2022
ef2551f
refactored nav bar to include drop down user menu
Sarguello12 May 9, 2022
17cc489
Merge pull request #4 from SA-lister/mysql-migration-seeder
c-berry May 9, 2022
3915acd
Merge pull request #5 from SA-lister/navbar
c-berry May 9, 2022
3817be3
added category model and interface, updated DAOfactory and created Ca…
Sarguello12 May 9, 2022
e51bbf8
working on sql statement issue
Sarguello12 May 9, 2022
6f57745
feat: create add functionality
c-berry May 9, 2022
e81e5df
Merge pull request #6 from SA-lister/edit-delete
c-berry May 9, 2022
74d92c5
edited navbar layout and added ads button
Nathan-Haustveit May 9, 2022
657b77e
Merge pull request #7 from SA-lister/navbar
Nathan-Haustveit May 9, 2022
0f4745a
Merge pull request #8 from SA-lister/categories-model
c-berry May 9, 2022
f045232
edited seeder and added cat_id to ads table
Sarguello12 May 9, 2022
7d168c1
Merge pull request #9 from SA-lister/mysql-migration-seeder
c-berry May 9, 2022
f963e0b
fixed sql statemtent issue in MySQLCategoriesDao
Sarguello12 May 9, 2022
916f7b1
bring back create ad functionality after database refactor
c-berry May 9, 2022
4b0ee2b
Merge pull request #10 from SA-lister/edit-delete
c-berry May 9, 2022
5ec69dd
Merge branch 'gocodeup:instructions' into mysql-migration-seeder
Sarguello12 May 9, 2022
e775233
Merge pull request #11 from SA-lister/mysql-migration-seeder
c-berry May 9, 2022
1e82da2
Merge pull request #12 from SA-lister/categories-model
Sarguello12 May 9, 2022
73a0bd9
add icons to navbar. waiting on adding links to categories
Nathan-Haustveit May 9, 2022
ae8b045
Merge pull request #13 from SA-lister/navbar
Nathan-Haustveit May 9, 2022
c0de240
added choose logic to display favicons
Sarguello12 May 9, 2022
c18b73d
Merge pull request #14 from SA-lister/jsp-choose
Sarguello12 May 9, 2022
6a5ecb7
work un update functionality
c-berry May 9, 2022
964e04c
completed search by categories methods
Sarguello12 May 9, 2022
cd7bb91
Merge pull request #15 from SA-lister/sort-by-cat
Sarguello12 May 9, 2022
c472c53
added favicon to index page
Sarguello12 May 9, 2022
e2c890e
Merge pull request #16 from SA-lister/jsp-choose
Sarguello12 May 9, 2022
cb94aa0
refactor to get functionality of update method
c-berry May 9, 2022
afad8bd
Merge branch 'main' into edit-delete
Nathan-Haustveit May 10, 2022
cc1dfa4
Merge pull request #17 from SA-lister/edit-delete
Nathan-Haustveit May 10, 2022
8608090
changed extractAd to public
Sarguello12 May 10, 2022
9d2c880
refactored navbar button options
Nathan-Haustveit May 10, 2022
c8cf0ac
complete delete ad functionality
c-berry May 10, 2022
d8b7016
Merge pull request #18 from SA-lister/edit-delete
c-berry May 10, 2022
5932ea8
Merge pull request #19 from SA-lister/navbar
Nathan-Haustveit May 10, 2022
3187a64
allowed user to view all adds on profile
Sarguello12 May 10, 2022
b2c4f65
Merge pull request #20 from SA-lister/profile-section
Sarguello12 May 10, 2022
1330c39
small refactor to clean up delete code
c-berry May 10, 2022
4bfe7df
Merge pull request #21 from SA-lister/edit-delete
c-berry May 10, 2022
9f9dfb3
filtered by userId to display to profile page
Sarguello12 May 10, 2022
9f94b1f
Merge pull request #22 from SA-lister/filter-username
Sarguello12 May 10, 2022
f54c61b
added create adds button for logged in users. working on icon layout
Nathan-Haustveit May 10, 2022
70a6e18
Merge pull request #23 from SA-lister/navbar
Nathan-Haustveit May 10, 2022
8d67415
refactored index page
Sarguello12 May 10, 2022
06e6bb3
Merge pull request #24 from SA-lister/fix-index
Sarguello12 May 10, 2022
6ac18b8
feat: add search by keyword functionality
c-berry May 10, 2022
de468ea
merge conflicts
c-berry May 10, 2022
433af9f
Merge pull request #25 from SA-lister/searchbar
c-berry May 10, 2022
5050a07
resolve merge conflicts
c-berry May 10, 2022
0d59c88
Merge pull request #26 from SA-lister/searchbar
c-berry May 10, 2022
3d7074e
resolve merge conflicts
c-berry May 10, 2022
f51609e
Merge pull request #27 from SA-lister/searchbar
c-berry May 10, 2022
01a11c6
working on adding ability to update user information
Nathan-Haustveit May 10, 2022
9e22125
refactored profile card look
Sarguello12 May 11, 2022
1a20307
Merge pull request #28 from SA-lister/profile
Sarguello12 May 11, 2022
9ee1efa
added like buttons to increase reputation
Sarguello12 May 11, 2022
556db6e
Merge pull request #29 from SA-lister/like-button
Sarguello12 May 11, 2022
b5f7aa8
added edit user information option
Nathan-Haustveit May 11, 2022
f0757a9
added edit user information option
Nathan-Haustveit May 11, 2022
9dab7cf
Merge pull request #30 from SA-lister/profile-section
Nathan-Haustveit May 11, 2022
9538ebf
added img carousel and added img file
Sarguello12 May 11, 2022
018cb99
Merge pull request #31 from SA-lister/home-page
Sarguello12 May 11, 2022
be8e2fd
created new page for updating profile
Nathan-Haustveit May 11, 2022
05a132e
Merge pull request #32 from SA-lister/profile-section
Nathan-Haustveit May 11, 2022
4abf003
edited cards
Sarguello12 May 11, 2022
0f1adc3
create footer
c-berry May 11, 2022
b60009d
Merge pull request #33 from SA-lister/design
c-berry May 11, 2022
6f94a04
margin refactor on navbar
c-berry May 11, 2022
663dbac
editing update profile layout
Nathan-Haustveit May 11, 2022
1e690b6
Merge pull request #34 from SA-lister/profile-section
Nathan-Haustveit May 11, 2022
6840572
add footer to every jsp
c-berry May 11, 2022
15e4c2e
Merge pull request #35 from SA-lister/like-button
Sarguello12 May 11, 2022
21d05d4
merge conflict
c-berry May 11, 2022
ede267f
Merge pull request #36 from SA-lister/design
c-berry May 11, 2022
cf3a212
clean up code
c-berry May 11, 2022
95b07c1
add footer to home
c-berry May 11, 2022
b8b5a70
add icons
c-berry May 11, 2022
47e895f
Merge pull request #37 from SA-lister/design
c-berry May 11, 2022
0e35968
fixed loop issue
Sarguello12 May 11, 2022
fb545b9
Merge pull request #38 from SA-lister/profile
Sarguello12 May 11, 2022
35d2e1c
updated edit page layout
Nathan-Haustveit May 11, 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
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
*.iml
target/
.idea/
Config.java
49 changes: 49 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.codeup.adlister</groupId>
<artifactId>adlister</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>

<dependencies>
<dependency>
<groupId>org.mindrot</groupId>
<artifactId>jbcrypt</artifactId>
<version>0.4</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
</dependency>
</dependencies>

</project>
18 changes: 18 additions & 0 deletions src/main/java/com/codeup/adlister/controllers/AdsIndexServlet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
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 = "controllers.AdsIndexServlet", urlPatterns = "/ads")
public class AdsIndexServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setAttribute("ads", DaoFactory.getAdsDao().all());
request.getRequestDispatcher("/WEB-INF/ads/index.jsp").forward(request, response);
}
}
17 changes: 17 additions & 0 deletions src/main/java/com/codeup/adlister/controllers/CounterServlet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.codeup.adlister.controllers;

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.CounterServlet", urlPatterns = "/count")
public class CounterServlet extends HttpServlet {
private int counter = 0;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
counter += 1;
response.getWriter().println("<h1>The count is " + counter + ".</h1>");
}
}
41 changes: 41 additions & 0 deletions src/main/java/com/codeup/adlister/controllers/CreateAdServlet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
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 static java.lang.Long.parseLong;
import static java.lang.Long.valueOf;

@WebServlet("/ads/create")
public class CreateAdServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if (request.getSession().getAttribute("user") == null) {
response.sendRedirect("/login");
return;
}
request.getRequestDispatcher("/WEB-INF/ads/create.jsp")
.forward(request, response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
User user = (User) request.getSession().getAttribute("user");

Ad ad = new Ad(
user.getId(),
Long.parseLong(request.getParameter("category")),
request.getParameter("title"),
request.getParameter("description"),
request.getParameter("location")
);
DaoFactory.getAdsDao().insert(ad);
response.sendRedirect("/ads");
}
}
29 changes: 29 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,29 @@
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("/delete")
public class DeleteAdServlet extends HttpServlet {

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

System.out.println(Long.parseLong(req.getParameter("delete")));

long ad_id = (Long.parseLong(req.getParameter("delete")));

DaoFactory.getAdsDao().destroy(ad_id);

resp.sendRedirect("/ads");
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
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("/category")
public class DisplayCatServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String query = req.getQueryString();
System.out.println(query);
req.setAttribute("ads", DaoFactory.getCategoriesDao().findByCategory(query));
req.getRequestDispatcher("/WEB-INF/ads/index.jsp").forward(req, resp);
}
}
21 changes: 21 additions & 0 deletions src/main/java/com/codeup/adlister/controllers/LikeAdServlet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
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("/like")
public class LikeAdServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String id = req.getQueryString();
// System.out.println(id);
DaoFactory.getAdsDao().likeAd(id);
resp.sendRedirect("/ads");
}
}
43 changes: 43 additions & 0 deletions src/main/java/com/codeup/adlister/controllers/LoginServlet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package com.codeup.adlister.controllers;

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

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.LoginServlet", urlPatterns = "/login")
public class LoginServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if (request.getSession().getAttribute("user") != null) {
response.sendRedirect("/profile");
return;
}
request.getRequestDispatcher("/WEB-INF/login.jsp").forward(request, response);
}

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

if (user == null) {
response.sendRedirect("/login");
return;
}

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

if (validAttempt) {
request.getSession().setAttribute("user", user);
response.sendRedirect("/profile");
} else {
response.sendRedirect("/login");
}
}
}
16 changes: 16 additions & 0 deletions src/main/java/com/codeup/adlister/controllers/LogoutServlet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.codeup.adlister.controllers;

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.LogoutServlet", urlPatterns = "/logout")
public class LogoutServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
request.getSession().removeAttribute("user");
request.getSession().invalidate();
response.sendRedirect("/login");
}
}
41 changes: 41 additions & 0 deletions src/main/java/com/codeup/adlister/controllers/RegisterServlet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.codeup.adlister.controllers;

import com.codeup.adlister.dao.DaoFactory;
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.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 {
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));

if (inputHasErrors) {
response.sendRedirect("/register");
return;
}

// create and save a new user
User user = new User(username, email, password);
DaoFactory.getUsersDao().insert(user);
response.sendRedirect("/login");
}
}
27 changes: 27 additions & 0 deletions src/main/java/com/codeup/adlister/controllers/SearchServlet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
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("/search")
public class SearchServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

String query = req.getParameter("search");
System.out.println(query);
req.setAttribute("ads", DaoFactory.getAdsDao().findByKeyword(query));
req.getRequestDispatcher("/WEB-INF/ads/index.jsp").forward(req, resp);
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

}
}
40 changes: 40 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,40 @@
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("/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.getRequestDispatcher("/WEB-INF/ads/create.jsp")
.forward(request, response);
}

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

Ad ad = new Ad(

Long.parseLong(request.getParameter("category")),
request.getParameter("title"),
request.getParameter("description"),
request.getParameter("location"),
Long.parseLong(request.getParameter("update"))
);

DaoFactory.getAdsDao().update(ad);
response.sendRedirect("/ads");
}
}
Loading