mirror of
https://github.com/nagisa77/OpenIsle.git
synced 2026-05-11 13:17:29 +08:00
Merge pull request #934 from nagisa77/codex/add-system-user-for-vote-and-lottery-results
Create system user for internal logging
This commit is contained in:
@@ -0,0 +1,34 @@
|
|||||||
|
package com.openisle.config;
|
||||||
|
|
||||||
|
import com.openisle.model.Role;
|
||||||
|
import com.openisle.model.User;
|
||||||
|
import com.openisle.repository.UserRepository;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.boot.CommandLineRunner;
|
||||||
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ensure a dedicated "system" user exists for internal operations.
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class SystemUserInitializer implements CommandLineRunner {
|
||||||
|
private final UserRepository userRepository;
|
||||||
|
private final PasswordEncoder passwordEncoder;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run(String... args) {
|
||||||
|
userRepository.findByUsername("system").orElseGet(() -> {
|
||||||
|
User system = new User();
|
||||||
|
system.setUsername("system");
|
||||||
|
system.setEmail("system@openisle.local");
|
||||||
|
system.setPassword(passwordEncoder.encode("system"));
|
||||||
|
system.setRole(Role.ADMIN);
|
||||||
|
system.setVerified(true);
|
||||||
|
system.setApproved(true);
|
||||||
|
return userRepository.save(system);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -3,6 +3,7 @@ package com.openisle.service;
|
|||||||
import com.openisle.model.*;
|
import com.openisle.model.*;
|
||||||
import com.openisle.repository.PostChangeLogRepository;
|
import com.openisle.repository.PostChangeLogRepository;
|
||||||
import com.openisle.repository.PostRepository;
|
import com.openisle.repository.PostRepository;
|
||||||
|
import com.openisle.repository.UserRepository;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@@ -15,6 +16,12 @@ import java.util.stream.Collectors;
|
|||||||
public class PostChangeLogService {
|
public class PostChangeLogService {
|
||||||
private final PostChangeLogRepository logRepository;
|
private final PostChangeLogRepository logRepository;
|
||||||
private final PostRepository postRepository;
|
private final PostRepository postRepository;
|
||||||
|
private final UserRepository userRepository;
|
||||||
|
|
||||||
|
private User getSystemUser() {
|
||||||
|
return userRepository.findByUsername("system")
|
||||||
|
.orElseThrow(() -> new IllegalStateException("System user not found"));
|
||||||
|
}
|
||||||
|
|
||||||
public void recordContentChange(Post post, User user, String oldContent, String newContent) {
|
public void recordContentChange(Post post, User user, String oldContent, String newContent) {
|
||||||
PostContentChangeLog log = new PostContentChangeLog();
|
PostContentChangeLog log = new PostContentChangeLog();
|
||||||
@@ -89,6 +96,7 @@ public class PostChangeLogService {
|
|||||||
public void recordVoteResult(Post post) {
|
public void recordVoteResult(Post post) {
|
||||||
PostVoteResultChangeLog log = new PostVoteResultChangeLog();
|
PostVoteResultChangeLog log = new PostVoteResultChangeLog();
|
||||||
log.setPost(post);
|
log.setPost(post);
|
||||||
|
log.setUser(getSystemUser());
|
||||||
log.setType(PostChangeType.VOTE_RESULT);
|
log.setType(PostChangeType.VOTE_RESULT);
|
||||||
logRepository.save(log);
|
logRepository.save(log);
|
||||||
}
|
}
|
||||||
@@ -96,6 +104,7 @@ public class PostChangeLogService {
|
|||||||
public void recordLotteryResult(Post post) {
|
public void recordLotteryResult(Post post) {
|
||||||
PostLotteryResultChangeLog log = new PostLotteryResultChangeLog();
|
PostLotteryResultChangeLog log = new PostLotteryResultChangeLog();
|
||||||
log.setPost(post);
|
log.setPost(post);
|
||||||
|
log.setUser(getSystemUser());
|
||||||
log.setType(PostChangeType.LOTTERY_RESULT);
|
log.setType(PostChangeType.LOTTERY_RESULT);
|
||||||
logRepository.save(log);
|
logRepository.save(log);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user