Untitled

 avatar
unknown
plain_text
6 months ago
1.8 kB
4
Indexable
    // Sign in an existing user with hashed password verification
    public static User signIn(String username, String password) throws SQLException {
        String sql = "SELECT * FROM User WHERE username = ? AND password = ?";

        // Hash the input password to compare with stored hash
        String hashedPassword = PasswordUtil.hashPassword(password);

        try (Connection connection = DatabaseManager.getInstance().getConnection(); PreparedStatement stmt = connection.prepareStatement(sql)) {

            stmt.setString(1, username);
            stmt.setString(2, hashedPassword);

            try (ResultSet rs = stmt.executeQuery()) {
                if (rs.next()) {
                    int userId = rs.getInt("Id");
                    String name = rs.getString("name");
                    String email = rs.getString("email");
                    String contactNumber = rs.getString("contactNumber");
                    String userType = rs.getString("userType");

                    User user = null;
                    if ("Administrator".equals(userType)) {
                        user = new Administrator(username, password, name, email, contactNumber);
                    } else if ("Trainer".equals(userType)) {
                        user = new Trainer(username, password, name, email, contactNumber, rs.getString("specialization"));
                    } else if ("Member".equals(userType)) {
                        user = new Member(username, password, name, email, contactNumber);
                    }
                    if (user != null) {
                        user.setId(userId);
                        return user;
                    }
                }
            }
        }
        return null; // Return null if login fails
    }
Editor is loading...
Leave a Comment