1 package fr.ifremer.quadrige3.synchro.server.security.mock;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 import fr.ifremer.quadrige3.core.dao.administration.user.QuserJdbcDao;
28 import fr.ifremer.quadrige3.synchro.server.config.SynchroServerConfiguration;
29 import fr.ifremer.quadrige3.synchro.server.security.QuadrigeUserDetailsImpl;
30 import org.springframework.context.annotation.Lazy;
31 import org.springframework.security.core.userdetails.UserDetails;
32 import org.springframework.security.core.userdetails.UserDetailsService;
33 import org.springframework.security.core.userdetails.UsernameNotFoundException;
34 import org.springframework.stereotype.Service;
35
36 import javax.annotation.Resource;
37 import javax.transaction.Transactional;
38
39
40
41
42
43 @Service("userDetailsServiceMock")
44 @Lazy
45 @Transactional
46 public class UserDetailsServiceMock implements UserDetailsService {
47
48 @Resource(name = "quserJdbcDao")
49 private QuserJdbcDao quserJdbcDao;
50
51 @Resource
52 private SynchroServerConfiguration config;
53
54 @Override
55 public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
56
57
58 if (config.getSecurityMockUsername().equals(username)) {
59 return new QuadrigeUserDetailsImpl(config.getSecurityMockUserId(), config.getSecurityMockPassword());
60 }
61
62 Integer userId;
63 try {
64 userId = quserJdbcDao.getUserIdByUsername(username);
65 } catch (Exception ex) {
66 throw new UsernameNotFoundException(String.format("Could not found the user for username [%s] in database", username), ex);
67 }
68
69 if (userId == null) {
70 throw new UsernameNotFoundException(String.format("No user found for username [%s] in database", username));
71 }
72
73 return new QuadrigeUserDetailsImpl(userId, "");
74 }
75 }