1.1 --- a/src/main/java/de/uapcore/lightpit/dao/postgres/PGUserDao.java Fri Oct 09 19:06:51 2020 +0200 1.2 +++ b/src/main/java/de/uapcore/lightpit/dao/postgres/PGUserDao.java Fri Oct 09 19:07:05 2020 +0200 1.3 @@ -38,12 +38,13 @@ 1.4 import java.util.ArrayList; 1.5 import java.util.List; 1.6 import java.util.Objects; 1.7 +import java.util.Optional; 1.8 1.9 import static de.uapcore.lightpit.dao.Functions.setStringOrNull; 1.10 1.11 public final class PGUserDao implements UserDao { 1.12 1.13 - private final PreparedStatement insert, update, list, find; 1.14 + private final PreparedStatement insert, update, list, find, findByUsername; 1.15 1.16 public PGUserDao(Connection connection) throws SQLException { 1.17 list = connection.prepareStatement( 1.18 @@ -54,6 +55,10 @@ 1.19 "select userid, username, lastname, givenname, mail " + 1.20 "from lpit_user where userid = ? "); 1.21 1.22 + findByUsername = connection.prepareStatement( 1.23 + "select userid, username, lastname, givenname, mail " + 1.24 + "from lpit_user where lower(username) = lower(?) "); 1.25 + 1.26 insert = connection.prepareStatement("insert into lpit_user (username, lastname, givenname, mail) values (?, ?, ?, ?)"); 1.27 update = connection.prepareStatement("update lpit_user set lastname = ?, givenname = ?, mail = ? where userid = ?"); 1.28 } 1.29 @@ -111,4 +116,16 @@ 1.30 } 1.31 } 1.32 } 1.33 + 1.34 + @Override 1.35 + public Optional<User> findByUsername(String username) throws SQLException { 1.36 + findByUsername.setString(1, username); 1.37 + try (var result = findByUsername.executeQuery()) { 1.38 + if (result.next()) { 1.39 + return Optional.of(mapColumns(result)); 1.40 + } else { 1.41 + return Optional.empty(); 1.42 + } 1.43 + } 1.44 + } 1.45 }