added tests, preparing submission confirmation
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user