package id.iptek.utms.module.controller; import id.iptek.utms.api.ApiResponse; import id.iptek.utms.core.i18n.MessageResolver; import id.iptek.utms.module.dto.ModuleResponse; import id.iptek.utms.module.dto.ModuleToggleRequest; import id.iptek.utms.module.service.ModuleRegistryService; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import jakarta.servlet.http.HttpServletRequest; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/api/modules") @SecurityRequirement(name = "bearerAuth") public class ModuleController { private final ModuleRegistryService moduleRegistryService; private final MessageResolver messageResolver; public ModuleController(ModuleRegistryService moduleRegistryService, MessageResolver messageResolver) { this.moduleRegistryService = moduleRegistryService; this.messageResolver = messageResolver; } @GetMapping @PreAuthorize("hasRole('ADMIN')") public ApiResponse> list() { return ApiResponse.ok(messageResolver.get("module.list.success"), moduleRegistryService.listModules()); } @PostMapping("/{code}/toggle") @PreAuthorize("hasRole('ADMIN')") public ApiResponse toggle(@PathVariable String code, @RequestBody ModuleToggleRequest request, HttpServletRequest servletRequest) { return ApiResponse.ok(messageResolver.get("module.toggle.success"), moduleRegistryService.setEnabled(code, request.enabled(), servletRequest)); } }