-
Notifications
You must be signed in to change notification settings - Fork 549
Expand file tree
/
Copy pathUserResetJob.java
More file actions
55 lines (46 loc) · 1.83 KB
/
UserResetJob.java
File metadata and controls
55 lines (46 loc) · 1.83 KB
1
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package com.crapi.service;
import com.crapi.constant.TestUsers;
import com.crapi.entity.User;
import com.crapi.model.SeedUser;
import com.crapi.repository.UserRepository;
import java.time.LocalDate;
import java.util.ArrayList;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@Component
public class UserResetJob {
private static final Logger logger = LoggerFactory.getLogger(UserResetJob.class);
private static final LocalDate DEFAULT_PASSWORD_DATE = LocalDate.of(2000, 1, 1);
@Autowired private UserRepository userRepository;
@Autowired private PasswordEncoder encoder;
@Scheduled(fixedRate = 3600000) // every hour
@Transactional
public void resetTestUserCredsIfChanged() {
ArrayList<SeedUser> testUsers = new TestUsers().getUsers();
int resetCount = 0;
for (SeedUser seedUser : testUsers) {
User user = userRepository.findByEmail(seedUser.getEmail());
if (user == null) {
continue;
}
LocalDate updatedAt = user.getPasswordUpdatedAt();
if (updatedAt != null && !updatedAt.equals(DEFAULT_PASSWORD_DATE)) {
user.setPassword(encoder.encode(seedUser.getPassword()));
user.setPasswordUpdatedAt(DEFAULT_PASSWORD_DATE);
userRepository.saveAndFlush(user);
resetCount++;
logger.info("Reset password for test user: {}", seedUser.getEmail());
}
}
if (resetCount > 0) {
logger.info("Reset credentials for {} test user(s)", resetCount);
} else {
logger.debug("All test user credentials are unchanged, no reset needed");
}
}
}