44 lines
1.7 KiB
Java
44 lines
1.7 KiB
Java
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<ModuleResponse>> list() {
|
|
return ApiResponse.ok(messageResolver.get("module.list.success"), moduleRegistryService.listModules());
|
|
}
|
|
|
|
@PostMapping("/{code}/toggle")
|
|
@PreAuthorize("hasRole('ADMIN')")
|
|
public ApiResponse<ModuleResponse> toggle(@PathVariable String code,
|
|
@RequestBody ModuleToggleRequest request,
|
|
HttpServletRequest servletRequest) {
|
|
return ApiResponse.ok(messageResolver.get("module.toggle.success"),
|
|
moduleRegistryService.setEnabled(code, request.enabled(), servletRequest));
|
|
}
|
|
}
|
|
|