Skip to content

#9 | Hendi | feat: Upgraded into Spring Boot 3.4.3 version πŸ«ΈπŸŒ€βœοΈπŸ“—πŸ§πŸ³β¬† #10

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 15 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
15 commits
Select commit Hold shift + click to select a range
7811566
#9 | Hendi | feat: Upgraded into Spring Boot 3.3.0 version πŸ«ΈπŸŒ€βœοΈπŸ“—πŸ§πŸ³β¬†
hendisantika Feb 26, 2025
6884b09
#9 | Hendi | feat: Upgraded into Spring Boot 3.3.1 version πŸ«ΈπŸŒ€βœοΈπŸ“—πŸ§πŸ³β¬†
hendisantika Feb 26, 2025
6f30be0
#9 | Hendi | feat: Upgraded into Spring Boot 3.3.2 version πŸ«ΈπŸŒ€βœοΈπŸ“—πŸ§πŸ³β¬†
hendisantika Feb 26, 2025
9802571
#9 | Hendi | feat: Upgraded into Spring Boot 3.3.3 version πŸ«ΈπŸŒ€βœοΈπŸ“—πŸ§πŸ³β¬†
hendisantika Feb 26, 2025
44acdfa
#9 | Hendi | feat: Upgraded into Spring Boot 3.3.4 version πŸ«ΈπŸŒ€βœοΈπŸ“—πŸ§πŸ³β¬†
hendisantika Feb 26, 2025
e96201b
#9 | Hendi | feat: Upgraded into Spring Boot 3.3.5 version πŸ«ΈπŸŒ€βœοΈπŸ“—πŸ§πŸ³β¬†
hendisantika Feb 26, 2025
2645180
#9 | Hendi | feat: Upgraded into Spring Boot 3.3.6 version πŸ«ΈπŸŒ€βœοΈπŸ“—πŸ§πŸ³β¬†
hendisantika Feb 26, 2025
3cb0944
#9 | Hendi | feat: Upgraded into Spring Boot 3.3.7 version πŸ«ΈπŸŒ€βœοΈπŸ“—πŸ§πŸ³β¬†
hendisantika Feb 26, 2025
c315b52
#9 | Hendi | feat: Upgraded into Spring Boot 3.3.8 version πŸ«ΈπŸŒ€βœοΈπŸ“—πŸ§πŸ³β¬†
hendisantika Feb 26, 2025
7315a57
#9 | Hendi | feat: Upgraded into Spring Boot 3.3.9 version πŸ«ΈπŸŒ€βœοΈπŸ“—πŸ§πŸ³β¬†
hendisantika Feb 26, 2025
15bc42f
#9 | Hendi | feat: Upgraded into Spring Boot 3.4.0 version πŸ«ΈπŸŒ€βœοΈπŸ“—πŸ§πŸ³β¬†
hendisantika Feb 26, 2025
ece09cd
#9 | Hendi | feat: Upgraded into Spring Boot 3.4.1 version πŸ«ΈπŸŒ€βœοΈπŸ“—πŸ§πŸ³β¬†
hendisantika Feb 26, 2025
a1f1eee
#9 | Hendi | feat: Upgraded into Spring Boot 3.4.2 version πŸ«ΈπŸŒ€βœοΈπŸ“—πŸ§πŸ³β¬†
hendisantika Feb 26, 2025
57f5969
#9 | Hendi | feat: Upgraded into Spring Boot 3.4.3 version πŸ«ΈπŸŒ€βœοΈπŸ“—πŸ§πŸ³β¬†
hendisantika Feb 26, 2025
5e658df
#9 | Hendi | fix: All codes πŸ«ΈπŸŒ€βœοΈπŸ“—πŸ§πŸ³β¬†
hendisantika Feb 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
*#
*.idea
logs
*.iml
*.ipr
*.iws
Expand Down
13 changes: 9 additions & 4 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.4</version>
<version>3.4.3</version>
<relativePath />
</parent>
<groupId>com.quickstartdev</groupId>
Expand All @@ -14,7 +14,7 @@
<description>Library management system </description>

<properties>
<java.version>17</java.version>
<java.version>23</java.version>
</properties>

<dependencies>
Expand All @@ -36,7 +36,7 @@
</dependency>
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity5</artifactId>
<artifactId>thymeleaf-extras-springsecurity6</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
Expand Down Expand Up @@ -75,6 +75,11 @@
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>

<build>
Expand All @@ -86,4 +91,4 @@
</plugins>
</build>

</project>
</project>
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
package com.knf.dev.librarymanagementsystem.controller;

import javax.servlet.http.HttpServletResponse;

import com.knf.dev.librarymanagementsystem.service.FileService;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

import com.knf.dev.librarymanagementsystem.service.FileService;

@Controller
public class FileExportController {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
package com.knf.dev.librarymanagementsystem.entity;

import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.ManyToMany;
import jakarta.persistence.Table;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.Table;

@Entity
@Table(name = "authors")
public class Author {
Expand Down
24 changes: 12 additions & 12 deletions src/main/java/com/knf/dev/librarymanagementsystem/entity/Book.java
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
package com.knf.dev.librarymanagementsystem.entity;

import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.JoinTable;
import jakarta.persistence.ManyToMany;
import jakarta.persistence.Table;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;

@Entity
@Table(name = "books")
public class Book {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
package com.knf.dev.librarymanagementsystem.entity;

import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.ManyToMany;
import jakarta.persistence.Table;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.Table;

@Entity
@Table(name = "categories")
public class Category {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
package com.knf.dev.librarymanagementsystem.entity;

import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.ManyToMany;
import jakarta.persistence.Table;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.Table;

@Entity
@Table(name = "publishers")
public class Publisher {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package com.knf.dev.librarymanagementsystem.entity;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;

@Entity
@Table(name = "role")
@Table(name = "roles")
public class Role {

@Id
Expand Down Expand Up @@ -39,4 +39,4 @@ public String getName() {
public void setName(String name) {
this.name = name;
}
}
}
30 changes: 15 additions & 15 deletions src/main/java/com/knf/dev/librarymanagementsystem/entity/User.java
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
package com.knf.dev.librarymanagementsystem.entity;

import java.util.Collection;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.JoinTable;
import jakarta.persistence.ManyToMany;
import jakarta.persistence.Table;
import jakarta.persistence.UniqueConstraint;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
import java.util.Collection;

@Entity
@Table(name = "user", uniqueConstraints = @UniqueConstraint(columnNames = "email"))
@Table(name = "users", uniqueConstraints = @UniqueConstraint(columnNames = "email"))
public class User {

@Id
Expand Down Expand Up @@ -98,4 +98,4 @@ public Collection<Role> getRoles() {
public void setRoles(Collection<Role> roles) {
this.roles = roles;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.knf.dev.librarymanagementsystem.securityconfig;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler;

import java.io.IOException;

/**
* Created by IntelliJ IDEA.
* Project : librarymanagementsystem
* User: hendisantika
* Link: s.id/hendisantika
* Email: [email protected]
* Telegram : @hendisantika34
* Date: 26/02/25
* Time: 10.19
* To change this template use File | Settings | File Templates.
*/
@Slf4j
public class AuthenticationFailureHandler extends SimpleUrlAuthenticationFailureHandler {

@Override
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response,
AuthenticationException exception) throws IOException {
String errorMessage = "failed login attempt. invalid username or password";
log.error(errorMessage);
if (exception.getMessage().equalsIgnoreCase("blocked")) {
errorMessage = "you have been blocked for 3 unsuccessful login attempt";
log.error(errorMessage);
}
log.info("path {}", request.getPathInfo());
response.sendRedirect(request.getPathInfo());
}

}
Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@
package com.knf.dev.librarymanagementsystem.securityconfig;

import com.knf.dev.librarymanagementsystem.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.authentication.AuthenticationFailureHandler;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;

import com.knf.dev.librarymanagementsystem.service.UserService;

@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
public class SecurityConfiguration {

@Autowired
private UserService userService;
Expand All @@ -33,17 +34,42 @@ public DaoAuthenticationProvider authenticationProvider() {
return auth;
}

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(authenticationProvider());
@Bean
public AuthenticationFailureHandler authenticationFailureHandler() {
return new com.knf.dev.librarymanagementsystem.securityconfig.AuthenticationFailureHandler();
}
/*
* Tell Spring Security to use the custom built UserDetailsServiceImpl class
*
*/

@Bean
public AuthenticationManager authenticationManager(AuthenticationConfiguration authConfig) throws Exception {
return authConfig.getAuthenticationManager();
}

@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/js/**", "/css/**", "/img/**").permitAll().anyRequest().authenticated()
.and().formLogin().loginPage("/login").permitAll().and().logout().invalidateHttpSession(true)
.clearAuthentication(true).logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/login?logout").permitAll();

// @Override
// protected void configure(AuthenticationManagerBuilder auth) throws Exception {
// auth.authenticationProvider(authenticationProvider());
// }

@Bean
public SecurityFilterChain configure(HttpSecurity http) throws Exception {
http.authorizeHttpRequests(req -> req
.requestMatchers("/login", "/js/**", "/css/**", "/img/**").permitAll()
.anyRequest().authenticated()
)
.formLogin(formLogin -> formLogin
.loginPage("/login") //enable this to go to your own custom login page
.loginProcessingUrl("/admin/dashboard") //enable this to use login page provided by spring security
.defaultSuccessUrl("/admin/dashboard", true)
.failureUrl("/login?error")
)
.logout(logout -> logout
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/login?logout").permitAll()
);
return http.build();
}
}
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
package com.knf.dev.librarymanagementsystem.service;

import java.io.IOException;

import javax.servlet.http.HttpServletResponse;

import com.opencsv.exceptions.CsvDataTypeMismatchException;
import com.opencsv.exceptions.CsvRequiredFieldEmptyException;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

public interface FileService {
public void exportCSV(String fileName, HttpServletResponse response)
void exportCSV(String fileName, HttpServletResponse response)
throws CsvDataTypeMismatchException, CsvRequiredFieldEmptyException, IOException;
}
Loading