-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathAdmin.java
More file actions
216 lines (190 loc) · 7.98 KB
/
Admin.java
File metadata and controls
216 lines (190 loc) · 7.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
import java.sql.*;
import java.util.Scanner;
public class Admin {
//private ArrayList<User> users;
//private ArrayList<Event> events;
//private ArrayList<ForumPost> posts;
public String firstName, lastName, username, password, email;
public long phoneNumber;
public Object profileImg;
public int authorizationLevel;
Scanner sc = new Scanner(System.in);
DBConnect connect = new DBConnect();
public static Connection conn = null;
Statement st = null;
static final String URL = "jdbc:mysql://192.168.72.21:3306/";
//User log in for DB
static final String USER = "TheHub";
static final String PASS = "$TheHub2023$";
public Admin() {
this.authorizationLevel = 0;
System.out.print("Enter your First Name: ");
this.firstName = sc.nextLine().trim().toLowerCase();
System.out.print("Enter your Last Name: ");
this.lastName = sc.nextLine().trim().toLowerCase();
System.out.print("Enter your Username: ");
// TODO need to check for duplicate names in DB before entering.
this.username = sc.nextLine().trim().toLowerCase();
System.out.print("Enter your Password: ");
// TODO need to hash passwords before storing
this.password = sc.nextLine().trim().toLowerCase();
System.out.print("Enter your Email: ");
this.email = sc.nextLine().trim().toLowerCase();
//validates email formatting
if (isValidEmail(email)) {
System.out.println("Valid email");
}
//validates email formatting
if (!isValidEmail(email)) {
System.out.println("Invalid email. Please enter a valid email:");
this.email = sc.nextLine().trim().toLowerCase();
}
System.out.print("Enter your Phone Number(only digits): ");
while (true) {
long input;
try {
input = sc.nextLong();
this.phoneNumber = input;
break;
} catch (NumberFormatException e) {
System.out.println("Please enter a valid integer.");
}
}
sc.nextLine();
//Write to DB
writeProfile();
}
public boolean isValidEmail(String email) {
String ePattern = "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3})|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$";
java.util.regex.Pattern p = java.util.regex.Pattern.compile(ePattern);
java.util.regex.Matcher m = p.matcher(email);
return m.matches();
}
public void writeProfile() {
try {
System.out.println("Trying to connect");
DBConnect connect = DBConnect.getInstance();
connect.dbConnect();
conn = DriverManager.getConnection(URL, USER, PASS);
st = conn.createStatement();
String sql = "USE thehub;";
st.executeUpdate(sql);
System.out.println("Connection Successful!");
System.out.println("Writing profile to database...");
String sql2 = "INSERT INTO profiles (firstname, lastname, username, password, email, phone_number, auth_level) " +
"VALUES ('" + this.firstName + "', '" + this.lastName + "', '" + this.username + "', '" + this.password + "', '" + this.email + "','" + this.phoneNumber + "', '" + this.authorizationLevel + "');";
st.executeUpdate(sql2);
System.out.println("Record inserted successfully");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
//TODO Not quite sure how this is going to work, needs refactoring
public void approveUser(String adminName, String adminPass, String username) {
boolean isAuthenticated = authenticate(adminName, adminPass);
if (isAuthenticated) {
System.out.println("Valid log in!");
//user.setApproved(true);
System.out.println("User " + user.getUserName() + " has been approved.");
} else {
System.out.println("Nice try! Give me a valid login...");
}
}
/*
// TODO Need to create "setApproved" method
public void approveEvent(Event event) {
event.setApproved(true);
System.out.println("Event " + event.getName() + " has been approved.");
}*/
// have to import event from database
//TODO Plug in DB connection
/*
public void approvePost(ForumPost post) {
post.setApproved(true);
System.out.println("Post " + post.getTitle() + " has been approved.");
}*/
public boolean authenticate(String username, String password) {
Connection conn = null;
PreparedStatement stmt = null;
boolean foundMatch = false;
try {
System.out.println("Trying to connect");
DBConnect connect = DBConnect.getInstance();
connect.dbConnect();
conn = DriverManager.getConnection(URL, USER, PASS);
st = conn.createStatement();
String sql = "USE thehub;";
st.executeUpdate(sql);
System.out.println("Connection Successful!");
// Prepare the statement
String sql2 = "SELECT * FROM profiles WHERE username = ? AND password = ? AND auth_level = '0';";
stmt = conn.prepareStatement(sql2);
stmt.setString(1, username);
stmt.setString(2, password);
// Execute the query
ResultSet rs = stmt.executeQuery();
// Check if the query returned a match
if (rs.next()) {
foundMatch = true;
}
// Clean up
/*rs.close();
stmt.close();
conn.close();*/
} catch (SQLException se) {
// Handle errors for JDBC
se.printStackTrace();
} catch (Exception e) {
// Handle errors for Class.forName
e.printStackTrace();
} finally {
// Close resources
try {
if (stmt != null) stmt.close();
} catch (SQLException ignored) {
} // nothing we can do
try {
if (conn != null) conn.close();
} catch (SQLException se) {
se.printStackTrace();
}
}
System.out.println("Result is:" + foundMatch);
return foundMatch;
}
//TODO Plug in DB Connection
public String deleteUser() {
String loserUser = username;
try {
connect.dbConnect();
System.out.print("Enter your Username");
this.username = sc.nextLine();
System.out.print("Enter your password");
this.password = sc.nextLine();
String sql = "SELECT * FROM profiles WHERE username = '" +
this.firstName + "' WHERE password ='" + this.password + "';";
st.executeUpdate(sql);
System.out.println("Admin Approved");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
System.out.println("User " + loserUser + " has been deleted.");
return null;
}
}