Ящики из веб-почты: администратор создаёт no-reply@, monitor@, support@, задаёт новый пароль, выключает
continuous-integration/drone/pr Build is passing
continuous-integration/drone/pr Build is passing
Регистрация остаётся закрытой. Администраторы — MAIL_ADMINS (по умолчанию первый ящик); роль не в базе, укравший ящик себя админом не сделает. API /api/admin/mailboxes, сгенерированный пароль — один раз в ответе, в лог не пишется. Настройки → MAILBOXES (видно только администратору). Тесты: MailboxAdminControllerTest (5), всего 73. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -74,6 +74,25 @@ public class UserService {
|
||||
return userRepository.save(user).then();
|
||||
}
|
||||
|
||||
public Flux<User> all() {
|
||||
return userRepository.findAll();
|
||||
}
|
||||
|
||||
public Mono<User> byId(Long id) {
|
||||
return userRepository.findById(id);
|
||||
}
|
||||
|
||||
/** Administrator sets a new password (Settings → Mailboxes): no current password needed. */
|
||||
public Mono<User> setPassword(User user, String newPassword) {
|
||||
user.setPassword(passwordEncoder.encode(newPassword));
|
||||
return userRepository.save(user);
|
||||
}
|
||||
|
||||
public Mono<User> setActive(User user, boolean active) {
|
||||
user.setActive(active);
|
||||
return userRepository.save(user);
|
||||
}
|
||||
|
||||
public Mono<User> updateDisplayName(User user, String displayName) {
|
||||
user.setDisplayName(displayName.trim());
|
||||
return userRepository.save(user);
|
||||
|
||||
Reference in New Issue
Block a user