From 65988afb96fe39c01e9346a26d6fdaf646c27df7 Mon Sep 17 00:00:00 2001 From: xigmaz Date: Fri, 7 Jun 2024 07:34:16 +0900 Subject: [PATCH] user login bcrpypt, jakarta2javax --- cardatabase/pom.xml | 2 +- .../cardatabase/CardatabaseApplication.java | 6 +++ .../com/packt/cardatabase/SecurityConfig.java | 29 +++++++++--- .../com/packt/cardatabase/domain/Car.java | 16 +++---- .../com/packt/cardatabase/domain/Owner.java | 2 +- .../com/packt/cardatabase/domain/User.java | 4 +- .../service/UserDetailsServiceImpl.java | 47 +++++++++++++++++++ 7 files changed, 88 insertions(+), 18 deletions(-) create mode 100644 cardatabase/src/main/java/com/packt/cardatabase/service/UserDetailsServiceImpl.java diff --git a/cardatabase/pom.xml b/cardatabase/pom.xml index ea41c33..996a8fe 100644 --- a/cardatabase/pom.xml +++ b/cardatabase/pom.xml @@ -5,7 +5,7 @@ xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/ org.springframework.boot spring-boot-starter-parent - 3.1.4 + 2.6.12 com.packt diff --git a/cardatabase/src/main/java/com/packt/cardatabase/CardatabaseApplication.java b/cardatabase/src/main/java/com/packt/cardatabase/CardatabaseApplication.java index c543059..9dba428 100644 --- a/cardatabase/src/main/java/com/packt/cardatabase/CardatabaseApplication.java +++ b/cardatabase/src/main/java/com/packt/cardatabase/CardatabaseApplication.java @@ -19,6 +19,8 @@ public class CardatabaseApplication implements CommandLineRunner { private CarRepository crepository; @Autowired private OwnerRepository orepository; + @Autowired + private UserRepository urepository; public static void main(String[] args) { SpringApplication.run(CardatabaseApplication.class, args); @@ -40,5 +42,9 @@ public class CardatabaseApplication implements CommandLineRunner { logger.info(car.getBrand()+" "+car.getModel()); } + urepository.save(new User("user","$2a$10$UmKzJgymyPoSLlG8PDfh0.ovK3F8.nrOHHuuDypuoDECIVuKDHWv6","USER")); + urepository.save(new User("admin","$2a$10$YU2mqUBFCB2mgQVeXQtZEe1alm0znU62Hi2KIG5H19439Ick9Oo9G","ADMIN")); + + } } diff --git a/cardatabase/src/main/java/com/packt/cardatabase/SecurityConfig.java b/cardatabase/src/main/java/com/packt/cardatabase/SecurityConfig.java index 6f4efdc..77a1d1a 100644 --- a/cardatabase/src/main/java/com/packt/cardatabase/SecurityConfig.java +++ b/cardatabase/src/main/java/com/packt/cardatabase/SecurityConfig.java @@ -1,21 +1,31 @@ package com.packt.cardatabase; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; 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.WebSecurityConfiguration; -import org.springframework.security.core.userdetails.User; -import org.springframework.security.core.userdetails.UserDetails; -import org.springframework.security.core.userdetails.UserDetailsService; -import org.springframework.security.provisioning.InMemoryUserDetailsManager; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +//import org.springframework.security.core.userdetails.User; +//import org.springframework.security.core.userdetails.UserDetails; +//import org.springframework.security.core.userdetails.UserDetailsService; +//import org.springframework.security.provisioning.InMemoryUserDetailsManager; //import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; //deprecated import org.springframework.security.web.SecurityFilterChain; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; + +import com.packt.cardatabase.service.UserDetailsServiceImpl; + @Configuration @EnableWebSecurity -public class SecurityConfig { +public class SecurityConfig extends WebSecurityConfigurerAdapter { + @Autowired + private UserDetailsServiceImpl userDetailsService; + + /* @SuppressWarnings("deprecation") @Bean public UserDetailsService userDetailsService() { @@ -26,5 +36,12 @@ public class SecurityConfig { .build(); return new InMemoryUserDetailsManager(user); } + */ + + @Autowired + public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{ + auth.userDetailsService(userDetailsService).passwordEncoder(new BCryptPasswordEncoder()); + + } } diff --git a/cardatabase/src/main/java/com/packt/cardatabase/domain/Car.java b/cardatabase/src/main/java/com/packt/cardatabase/domain/Car.java index 67fda82..fd7a3b8 100644 --- a/cardatabase/src/main/java/com/packt/cardatabase/domain/Car.java +++ b/cardatabase/src/main/java/com/packt/cardatabase/domain/Car.java @@ -1,13 +1,13 @@ package com.packt.cardatabase.domain; -import jakarta.persistence.Entity; -import jakarta.persistence.FetchType; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.Column; -import jakarta.persistence.ManyToOne; -import jakarta.persistence.JoinColumn; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Column; +import javax.persistence.ManyToOne; +import javax.persistence.JoinColumn; @Entity public class Car { diff --git a/cardatabase/src/main/java/com/packt/cardatabase/domain/Owner.java b/cardatabase/src/main/java/com/packt/cardatabase/domain/Owner.java index bf264e8..43e071c 100644 --- a/cardatabase/src/main/java/com/packt/cardatabase/domain/Owner.java +++ b/cardatabase/src/main/java/com/packt/cardatabase/domain/Owner.java @@ -1,5 +1,5 @@ package com.packt.cardatabase.domain; -import jakarta.persistence.*; +import javax.persistence.*; import java.util.*; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/cardatabase/src/main/java/com/packt/cardatabase/domain/User.java b/cardatabase/src/main/java/com/packt/cardatabase/domain/User.java index 9fc74ab..ccac985 100644 --- a/cardatabase/src/main/java/com/packt/cardatabase/domain/User.java +++ b/cardatabase/src/main/java/com/packt/cardatabase/domain/User.java @@ -1,7 +1,7 @@ package com.packt.cardatabase.domain; -import jakarta.persistence.Column; -import jakarta.persistence.*; +import javax.persistence.Column; +import javax.persistence.*; @Table(name="`user`") diff --git a/cardatabase/src/main/java/com/packt/cardatabase/service/UserDetailsServiceImpl.java b/cardatabase/src/main/java/com/packt/cardatabase/service/UserDetailsServiceImpl.java new file mode 100644 index 0000000..0d454ed --- /dev/null +++ b/cardatabase/src/main/java/com/packt/cardatabase/service/UserDetailsServiceImpl.java @@ -0,0 +1,47 @@ +package com.packt.cardatabase.service; + +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.userdetails.User.UserBuilder; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.stereotype.Service; + +import com.packt.cardatabase.domain.User; +import com.packt.cardatabase.domain.UserRepository; + +@Service +public class UserDetailsServiceImpl implements UserDetailsService{ + + +@Autowired +private UserRepository repository; + +@Override +public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException{ + Optional user = repository.findByUsername(username); + UserBuilder builder = null; + if (user.isPresent()) { + User currentUser = user.get(); + builder = org.springframework.security.core.userdetails.User.withUsername(username); + builder.password(currentUser.getPassword()); + builder.roles(currentUser.getRole()); + }else { + throw new UsernameNotFoundException("User not ffound."); + + } + return builder.build(); +} + + + + + + + + + + +}