1 package fr.ifremer.quadrige2.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 javax.annotation.Resource;
28 import javax.transaction.Transactional;
29
30 import fr.ifremer.quadrige2.core.dao.administration.user.QuserJdbcDao;
31 import org.springframework.context.annotation.Lazy;
32 import org.springframework.security.core.userdetails.UserDetails;
33 import org.springframework.security.core.userdetails.UserDetailsService;
34 import org.springframework.security.core.userdetails.UsernameNotFoundException;
35 import org.springframework.stereotype.Service;
36
37 import fr.ifremer.quadrige2.synchro.server.config.SynchroServerConfiguration;
38 import fr.ifremer.quadrige2.synchro.server.security.Quadrige2UserDetailsImpl;
39
40
41
42
43
44 @Service("userDetailsServiceMock")
45 @Lazy
46 @Transactional
47 public class UserDetailsServiceMock implements UserDetailsService {
48
49 @Resource(name = "quserJdbcDao")
50 QuserJdbcDao quserJdbcDao;
51
52 @Resource
53 SynchroServerConfiguration config;
54
55 @Override
56 public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
57
58
59 if (config.getSecurityMockUsername().equals(username)) {
60 return new Quadrige2UserDetailsImpl(config.getSecurityMockUserId(), config.getSecurityMockPassword());
61 }
62
63 Integer userId = null;
64 try {
65 userId = quserJdbcDao.getUserIdByUsername(username);
66 } catch (Exception ex) {
67 throw new UsernameNotFoundException(String.format("Could not found the user for username [%s] in database", username), ex);
68 }
69
70 if (userId == null) {
71 throw new UsernameNotFoundException(String.format("No user found for username [%s] in database", username));
72 }
73
74 return new Quadrige2UserDetailsImpl(userId, "");
75 }
76 }