summaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/blog/web/security/CustomUserDetailsService.java
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2024-07-13 04:23:01 -0400
committerrealtradam <[email protected]>2024-07-13 04:23:01 -0400
commit2f91d2067e7da107a83225f063216c0c6dd7b7cc (patch)
treeec01de8f39b22c010e653f397de5f74d040259b2 /src/main/java/com/blog/web/security/CustomUserDetailsService.java
parentff63bacc647a20c59ce642a4d6b647c3a4290418 (diff)
downloadspring-blog-2f91d2067e7da107a83225f063216c0c6dd7b7cc.tar.gz
spring-blog-2f91d2067e7da107a83225f063216c0c6dd7b7cc.zip
complete registration and login
Diffstat (limited to 'src/main/java/com/blog/web/security/CustomUserDetailsService.java')
-rw-r--r--src/main/java/com/blog/web/security/CustomUserDetailsService.java38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/main/java/com/blog/web/security/CustomUserDetailsService.java b/src/main/java/com/blog/web/security/CustomUserDetailsService.java
new file mode 100644
index 0000000..a7516f3
--- /dev/null
+++ b/src/main/java/com/blog/web/security/CustomUserDetailsService.java
@@ -0,0 +1,38 @@
+package com.blog.web.security;
+
+import com.blog.web.models.UserEntity;
+import com.blog.web.repository.UserRepository;
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
+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.core.userdetails.UsernameNotFoundException;
+import org.springframework.stereotype.Service;
+
+import java.util.stream.Collectors;
+
+@Service
+public class CustomUserDetailsService implements UserDetailsService {
+ private UserRepository userRepository;
+
+ public CustomUserDetailsService(UserRepository userRepository) {
+ this.userRepository = userRepository;
+ }
+
+ @Override
+ public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
+ UserEntity user = userRepository.findFirstByUsername(username);
+ if(user != null) {
+ User authUser = new User(
+ user.getEmail(),
+ user.getPassword(),
+ user.getRoles().stream().map((role) -> new SimpleGrantedAuthority(role.getName()))
+ .collect(Collectors.toList())
+ );
+ return authUser;
+ }
+ else {
+ throw new UsernameNotFoundException("Invalid username or password");
+ }
+ }
+}