source: src/main/java/edu/gjoko/schedlr/services/PostgresUserDetailsService.java@ 763289e

Last change on this file since 763289e was 763289e, checked in by Gjoko <goko_kostadinov@…>, 20 months ago

Fix security

  • Property mode set to 100644
File size: 1.7 KB
Line 
1package edu.gjoko.schedlr.services;
2
3import edu.gjoko.schedlr.entity.Stakeholder;
4import edu.gjoko.schedlr.repositories.StakeholderRepository;
5import org.springframework.security.core.GrantedAuthority;
6import org.springframework.security.core.authority.SimpleGrantedAuthority;
7import org.springframework.security.core.userdetails.User;
8import org.springframework.security.core.userdetails.UserDetails;
9import org.springframework.security.core.userdetails.UserDetailsService;
10import org.springframework.security.core.userdetails.UsernameNotFoundException;
11import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
12import org.springframework.stereotype.Service;
13
14import java.util.HashSet;
15import java.util.Set;
16
17@Service
18public class PostgresUserDetailsService implements UserDetailsService {
19
20 private final StakeholderRepository stakeholderRepository;
21 private final BCryptPasswordEncoder bCryptPasswordEncoder;
22
23 public PostgresUserDetailsService(StakeholderRepository stakeholderRepository,
24 BCryptPasswordEncoder bCryptPasswordEncoder) {
25 this.stakeholderRepository = stakeholderRepository;
26 this.bCryptPasswordEncoder = bCryptPasswordEncoder;
27 }
28
29 @Override
30 public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
31 Stakeholder user = stakeholderRepository.findStakeholderByUsername(username);
32 if(user == null) {
33 throw new UsernameNotFoundException("Non existing user");
34 }
35 Set<GrantedAuthority> grantedAuthorities = new HashSet<>();
36 grantedAuthorities.add(new SimpleGrantedAuthority(user.getStakeholderType().name()));
37 return new User(user.getUsername(), user.getPassword(), grantedAuthorities);
38 }
39}
Note: See TracBrowser for help on using the repository browser.