source: src/main/java/edu/gjoko/schedlr/services/PostgresUserDetailsService.java@ 950fa0d

Last change on this file since 950fa0d was 950fa0d, checked in by Gjoko Kostadinov <gjoko.kostadinov@…>, 13 months ago

Periodic update

  • Property mode set to 100644
File size: 2.1 KB
RevLine 
[cf9cdbf]1package edu.gjoko.schedlr.services;
2
[8bcd64c]3import edu.gjoko.schedlr.entity.Business;
4import edu.gjoko.schedlr.entity.BusinessStatus;
[cf9cdbf]5import edu.gjoko.schedlr.entity.Stakeholder;
[8bcd64c]6import edu.gjoko.schedlr.entity.StakeholderType;
7import edu.gjoko.schedlr.repositories.BusinessRepository;
[cf9cdbf]8import edu.gjoko.schedlr.repositories.StakeholderRepository;
[8bcd64c]9import lombok.RequiredArgsConstructor;
[cf9cdbf]10import org.springframework.security.core.GrantedAuthority;
11import org.springframework.security.core.authority.SimpleGrantedAuthority;
12import org.springframework.security.core.userdetails.User;
13import org.springframework.security.core.userdetails.UserDetails;
14import org.springframework.security.core.userdetails.UserDetailsService;
15import org.springframework.security.core.userdetails.UsernameNotFoundException;
16import org.springframework.stereotype.Service;
17
18import java.util.HashSet;
19import java.util.Set;
20
21@Service
[8bcd64c]22@RequiredArgsConstructor
[cf9cdbf]23public class PostgresUserDetailsService implements UserDetailsService {
24
25 private final StakeholderRepository stakeholderRepository;
[8bcd64c]26 private final BusinessRepository businessRepository;
[cf9cdbf]27
28 @Override
29 public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
30 Stakeholder user = stakeholderRepository.findStakeholderByUsername(username);
[950fa0d]31 if (user == null) {
[cf9cdbf]32 throw new UsernameNotFoundException("Non existing user");
33 }
[8bcd64c]34
[950fa0d]35 if (user.getStakeholderType() == StakeholderType.BUSINESS_OWNER) {
[8bcd64c]36 Business business = businessRepository.findBusinessByOwner(user);
37 if (business.getBusinessStatus() != BusinessStatus.ACTIVE) {
38 throw new SecurityException("User not approved by admin");
39 }
40 }
[cf9cdbf]41 Set<GrantedAuthority> grantedAuthorities = new HashSet<>();
42 grantedAuthorities.add(new SimpleGrantedAuthority(user.getStakeholderType().name()));
[8bcd64c]43
[cf9cdbf]44 return new User(user.getUsername(), user.getPassword(), grantedAuthorities);
45 }
[8bcd64c]46
47 public Long loadStakeholderId(String username) {
48 return stakeholderRepository.findStakeholderByUsername(username).getId();
49 }
[cf9cdbf]50}
Note: See TracBrowser for help on using the repository browser.