- AppSetting 엔티티 + Repository (key-value 설정 저장소) - SettingsService (자동승인 조회/수정) - AdminSettingsController (GET/PUT /api/admin/settings/registration) - Role.defaultGrant 컬럼 + AdminRoleController default-grant 토글 - AuthController: 신규 사용자 생성 시 자동승인 + 기본롤 부여 로직 - data.sql: WING_PERMIT 롤 시드 + auto-approve 설정 시드 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
48 lines
1.8 KiB
Java
48 lines
1.8 KiB
Java
package com.gcsc.guide.service;
|
|
|
|
import com.gcsc.guide.dto.RegistrationSettingsResponse;
|
|
import com.gcsc.guide.dto.RoleResponse;
|
|
import com.gcsc.guide.entity.AppSetting;
|
|
import com.gcsc.guide.repository.AppSettingRepository;
|
|
import com.gcsc.guide.repository.RoleRepository;
|
|
import lombok.RequiredArgsConstructor;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
import java.util.List;
|
|
|
|
@Service
|
|
@RequiredArgsConstructor
|
|
public class SettingsService {
|
|
|
|
private static final String AUTO_APPROVE_KEY = "registration.auto-approve";
|
|
|
|
private final AppSettingRepository appSettingRepository;
|
|
private final RoleRepository roleRepository;
|
|
|
|
@Transactional(readOnly = true)
|
|
public boolean isAutoApproveEnabled() {
|
|
return appSettingRepository.findBySettingKey(AUTO_APPROVE_KEY)
|
|
.map(s -> Boolean.parseBoolean(s.getSettingValue()))
|
|
.orElse(false);
|
|
}
|
|
|
|
@Transactional(readOnly = true)
|
|
public RegistrationSettingsResponse getRegistrationSettings() {
|
|
boolean autoApprove = isAutoApproveEnabled();
|
|
List<RoleResponse> defaultRoles = roleRepository.findByDefaultGrantTrue().stream()
|
|
.map(RoleResponse::from)
|
|
.toList();
|
|
return new RegistrationSettingsResponse(autoApprove, defaultRoles);
|
|
}
|
|
|
|
@Transactional
|
|
public RegistrationSettingsResponse updateAutoApprove(boolean autoApprove) {
|
|
AppSetting setting = appSettingRepository.findBySettingKey(AUTO_APPROVE_KEY)
|
|
.orElseGet(() -> new AppSetting(AUTO_APPROVE_KEY, "false", "신규 가입자 자동 승인 여부"));
|
|
setting.updateValue(String.valueOf(autoApprove));
|
|
appSettingRepository.save(setting);
|
|
return getRegistrationSettings();
|
|
}
|
|
}
|