package com.takensoft.cms.accesCtrl.web;

import com.takensoft.cms.accesCtrl.service.AccesCtrlService;
import com.takensoft.cms.accesCtrl.service.SystemAccesCtrlService;
import com.takensoft.common.util.ResponseData;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import java.nio.charset.Charset;
import java.util.Map;

/**
 * @author  : takensoft
 * @since   : 2024.05.20
 *
 * 접근 제어 확인 관련 컨트롤러
 */
@RestController
@RequiredArgsConstructor
@Slf4j
@RequestMapping(value = "/sys/accesCtrl")
public class SystemAccesCtrlController {

    private final SystemAccesCtrlService systemAccesCtrlService;

    /**
     * @author takensoft
     * @since 2024.05.20
     * @param
     * @return
     * @throws Exception
     *
     * 접근 제어 관련 사용자 확인
     */
    @PostMapping(value = "/accessCheck.json")
    public ResponseEntity<?> accessCheck(@RequestBody Map params, HttpServletRequest req) throws Exception {
        boolean result = systemAccesCtrlService.routerAccesCheck(params, req);

        // 응답 처리
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(new MediaType("application", "json", Charset.forName("UTF-8")));
        ResponseData responseData = new ResponseData();
        responseData.setStatus(HttpStatus.OK);
        responseData.setMessage("검증");
        responseData.setData(result);
        return new ResponseEntity<>(responseData, headers, HttpStatus.OK);
    }

}
