summaryrefslogtreecommitdiff
path: root/src/main/java/com/mavlushechka/studentdatabase/service/CustomUserDetailsService.java
diff options
context:
space:
mode:
authormavlushechka <mavlushechka@gmail.com>2021-11-12 21:31:54 +0500
committermavlushechka <mavlushechka@gmail.com>2021-11-12 21:31:54 +0500
commit8d284e1690faba5c0f834a07bac81e1ee00d515f (patch)
treedd587e71f8c091c1262a84cd2c7e1dd7cd7e4226 /src/main/java/com/mavlushechka/studentdatabase/service/CustomUserDetailsService.java
Initializing
Diffstat (limited to 'src/main/java/com/mavlushechka/studentdatabase/service/CustomUserDetailsService.java')
-rwxr-xr-xsrc/main/java/com/mavlushechka/studentdatabase/service/CustomUserDetailsService.java50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/main/java/com/mavlushechka/studentdatabase/service/CustomUserDetailsService.java b/src/main/java/com/mavlushechka/studentdatabase/service/CustomUserDetailsService.java
new file mode 100755
index 0000000..b238c98
--- /dev/null
+++ b/src/main/java/com/mavlushechka/studentdatabase/service/CustomUserDetailsService.java
@@ -0,0 +1,50 @@
+package com.mavlushechka.studentdatabase.service;
+
+import com.mavlushechka.studentdatabase.domain.Role;
+import com.mavlushechka.studentdatabase.domain.User;
+import com.mavlushechka.studentdatabase.repository.UserRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
+import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.security.core.userdetails.UserDetailsService;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+@Service
+public class CustomUserDetailsService implements UserDetailsService {
+ @Autowired
+ private UserRepository userRepository;
+ @Autowired
+ private BCryptPasswordEncoder bCryptPasswordEncoder;
+
+ public void saveUser(User user) {
+ user.setPassword(bCryptPasswordEncoder.encode(user.getPassword()));
+ userRepository.save(user);
+ }
+
+ @Override
+ public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
+ User user = userRepository.findByUsername(username);
+
+ if (user != null) {
+ List<GrantedAuthority> authorities = getUserAuthority(user.getRoles());
+ return buildUserForAuthentication(user, authorities);
+ } else {
+ throw new UsernameNotFoundException("Username not found");
+ }
+ }
+
+ private List<GrantedAuthority> getUserAuthority(Set<Role> userRoles) {
+ Set<GrantedAuthority> roles = new HashSet<>();
+ userRoles.forEach((role) -> roles.add(new SimpleGrantedAuthority(role.getRole())));
+ return new ArrayList<>(roles);
+ }
+
+ private UserDetails buildUserForAuthentication(User user, List<GrantedAuthority> authorities) {
+ return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), authorities);
+ }
+}