added tests, preparing submission confirmation

This commit is contained in:
2022-04-17 19:52:52 +02:00
parent 6d73018247
commit e2bba174ee
9 changed files with 335 additions and 157 deletions

View File

@@ -16,6 +16,7 @@ import static de.srsoftware.widerhall.Constants.*;
public class User {
public static final String TABLE_NAME = "Users";
private static final Logger LOG = LoggerFactory.getLogger(User.class);
private String email, salt, hashedPass, name;
public User(String email, String name, String salt, String hashedPass) {
@@ -25,6 +26,25 @@ public class User {
this.hashedPass = hashedPass;
}
/*********** field accessors ***************/
public String email() {
return email;
}
public String hashedPassword() {
return hashedPass;
}
public String name() {
return name;
}
public String salt(){
return salt;
}
/************** end of field accessors ****************/
public static User create(String email, String name, String password) throws SQLException {
String salt = null;
String hashedPass = null;
@@ -44,32 +64,7 @@ public class User {
.append(HASHED_PASS).append(" ").append(VARCHAR).append(", ")
.append(NAME).append(" ").append(VARCHAR)
.append(");");
Database.open().query(sql.toString()).run();
}
public static List<User> loadAll(Collection<String> emails) throws SQLException {
var rs = Database.open()
.query("SELECT * FROM "+TABLE_NAME)
.where(EMAIL,emails)
.exec();
var list = new ArrayList<User>();
while (rs.next()){
var email = rs.getString(EMAIL);
var name = rs.getString(NAME);
var salt = rs.getString(SALT);
var hashedPass = rs.getString(HASHED_PASS);
list.add(new User(email,name,salt,hashedPass));
}
return list;
}
public String email() {
return email;
}
public String hashedPassword() {
return hashedPass;
Database.open().query(sql).run();
}
public boolean is(String test){
@@ -77,29 +72,31 @@ public class User {
return test.equals(name) || test.equals(email);
}
public static List<User> list() {
public static List<User> loadAll() throws SQLException {
return loadAll(null);
}
public static List<User> loadAll(Collection<String> emails) throws SQLException {
var userList = new ArrayList<User>();
try {
var rs = Database.open().query("SELECT * FROM Users").exec();
while (rs.next()){
var email = rs.getString(EMAIL);
var name = rs.getString(NAME);
var salt = rs.getString(SALT);
var hashedPassword = rs.getString(HASHED_PASS);
userList.add(new User(email,name,salt,hashedPassword));
}
} catch (SQLException e) {
LOG.warn("Error loading user list!",e);
}
var query = Database.open().select(TABLE_NAME);
if (emails != null && !emails.isEmpty()) query.where(EMAIL,emails);
var rs = query.exec();
while (rs.next()) userList.add(new User(
rs.getString(EMAIL),
rs.getString(NAME),
rs.getString(SALT),
rs.getString(HASHED_PASS)));
return userList;
}
public static User load(String email, String password) throws InvalidKeyException, SQLException {
public static User loadUser(String email, String password) throws InvalidKeyException, SQLException {
ResultSet rs = Database.open()
.query("SELECT * FROM Users")
.select(TABLE_NAME)
.where(EMAIL,email)
.exec();
try {
if (rs.next()) {
email = rs.getString(EMAIL);
@@ -124,12 +121,9 @@ public class User {
return hashedPass.equals(Util.sha256(password+salt));
}
public String name() {
return name;
}
public static boolean noUsers() throws SQLException {
var rs = Database.open().query("SELECT count(*) FROM users").exec();
var rs = Database.open().select(TABLE_NAME,"count(*)").exec();
try {
if (rs.next()) {
return rs.getInt(1) < 1;