Skip to content

Commit d84c884

Browse files
committed
update
1 parent 6cb3134 commit d84c884

File tree

14 files changed

+193
-57
lines changed

14 files changed

+193
-57
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
11
/out/
2+
Home.iml
3+
.idea

.idea/sshConfigs.xml

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

sql files/hardwareDatabase install.sql

Lines changed: 0 additions & 13 deletions
This file was deleted.

web/WEB-INF/classes/controllers/account/CreateAccountController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public void doPost(HttpServletRequest request, HttpServletResponse response) thr
2121
UserAuthenticator accDB = new UserAuthenticator();
2222
if(!accDB.usernameExists(request.getParameter("username"), true)){
2323
accDB.insertPendingUser(request.getParameter("username"), request.getParameter("password"));
24-
response.sendRedirect(request.getContextPath() + "/index?status=pending");
24+
response.sendRedirect(request.getContextPath() + "/loginPage?status=pending");
2525
}
2626
else{
2727
request.setAttribute("username", request.getParameter("username"));
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package controllers.account;
2+
3+
import controllers.authentication.UserAuthenticator;
4+
import objects.User;
5+
6+
import javax.servlet.RequestDispatcher;
7+
import javax.servlet.ServletException;
8+
import javax.servlet.annotation.WebServlet;
9+
import javax.servlet.http.HttpServlet;
10+
import javax.servlet.http.HttpServletRequest;
11+
import javax.servlet.http.HttpServletResponse;
12+
import java.io.IOException;
13+
14+
@WebServlet("/myAccount")
15+
public class UserAccountController extends HttpServlet {
16+
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
17+
request.setAttribute("user", new UserAuthenticator().getUserDetails(request.getUserPrincipal().getName()));
18+
19+
RequestDispatcher rd = request.getRequestDispatcher( "/WEB-INF/jsp/user/userAccount.jsp");
20+
rd.forward(request,response);
21+
}
22+
}

web/WEB-INF/classes/controllers/account/admin/adminMenuController.java

Lines changed: 0 additions & 23 deletions
This file was deleted.

web/WEB-INF/classes/controllers/authentication/UserAuthenticator.java

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import database.DAO;
44
import database.Database;
5+
import objects.User;
56

67
import java.math.BigInteger;
78
import java.nio.charset.StandardCharsets;
@@ -121,7 +122,7 @@ public void insertPendingUser(String username, String password){
121122
String salt = generateSalt();
122123
String hashedPassword = getSHAString(salt + getSHAString(password));
123124
try (Connection conn = getConnection(Database.USER_STORE)){
124-
PreparedStatement statement = conn.prepareStatement("INSERT INTO pending_users VALUES (?,?,?)");
125+
PreparedStatement statement = conn.prepareStatement("CALL addPendingUser(?,?,?)");
125126
statement.setString(1, username);
126127
statement.setString(2, salt);
127128
statement.setString(3, hashedPassword);
@@ -168,4 +169,32 @@ public void verifyPendingUser(boolean accept, String username, String role){
168169
e.printStackTrace();
169170
}
170171
}
172+
173+
public User getUserDetails(String username){
174+
User user = new User();
175+
try(Connection conn = getConnection(Database.USER_STORE)){
176+
PreparedStatement statement = conn.prepareStatement("SELECT user_name, creation_date FROM users WHERE user_name = ?");
177+
statement.setString(1, username);
178+
ResultSet rs = statement.executeQuery();
179+
while(rs.next()){
180+
user.setName(rs.getString("user_name"));
181+
user.setAccountCreation(rs.getString("creation_date"));
182+
183+
PreparedStatement statement2 = conn.prepareStatement("SELECT role_name FROM user_roles WHERE user_name = ?");
184+
statement2.setString(1, username);
185+
ResultSet rs2 = statement2.executeQuery();
186+
while(rs2.next()){
187+
user.addRole(rs2.getString("role_name"));
188+
}
189+
statement2.close();
190+
rs2.close();
191+
}
192+
statement.close();
193+
rs.close();
194+
195+
}catch (SQLException e){
196+
e.printStackTrace();
197+
}
198+
return user;
199+
}
171200
}

web/WEB-INF/classes/filters/UserRoleFilter.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@ public class UserRoleFilter implements Filter {
2828

2929
public void init(FilterConfig cfg) throws ServletException {
3030

31-
// TODO: fetch any services we need to determine the user ?
32-
// e.g. database handler, ldap service, from session attribute or servlet context ?
3331
}
3432

3533
public void doFilter(ServletRequest req, ServletResponse response, FilterChain next) throws IOException, ServletException {

web/WEB-INF/classes/filters/UserRoleRequestWrapper.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,15 @@ public String getName() {
4141
}
4242
};
4343
}
44+
45+
@Override
46+
public String toString(){
47+
String user;
48+
user = this.user + ", ";
49+
for (String role: roles) {
50+
user += role + ", ";
51+
}
52+
53+
return user;
54+
}
4455
}

web/WEB-INF/classes/objects/User.java

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package objects;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
public class User {
7+
8+
private String name, accountCreation;
9+
private List<String> roles;
10+
11+
public User(){
12+
this.name = "";
13+
this.accountCreation = "";
14+
this.roles = new ArrayList<>();
15+
}
16+
17+
public User(String name, List<String> roles, String accountCreation){
18+
this.name = name;
19+
this.roles = roles;
20+
this.accountCreation = accountCreation;
21+
}
22+
23+
public void setName(String name) {
24+
this.name = name;
25+
}
26+
27+
public void setAccountCreation(String accountCreation) {
28+
this.accountCreation = accountCreation;
29+
}
30+
31+
public void addRole(String role) {
32+
roles.add(role);
33+
}
34+
35+
public String getName() {
36+
return name;
37+
}
38+
39+
public String getAccountCreation() {
40+
return accountCreation;
41+
}
42+
43+
public List<String> getRoles() {
44+
return roles;
45+
}
46+
}

0 commit comments

Comments
 (0)