From a0d97801899e174d55e35a643e6e900f46578bd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=B5=9C=EC=A4=80=ED=9D=A0?= Date: Wed, 4 Mar 2026 11:38:35 +0900 Subject: [PATCH] daemon-idc init --- app/Controllers/Ajax/AjaxController.php | 78 ++++++++++++------------- app/Controllers/Auth/AuthController.php | 1 + app/Libraries/AuthContext.php | 10 ++-- 3 files changed, 45 insertions(+), 44 deletions(-) diff --git a/app/Controllers/Ajax/AjaxController.php b/app/Controllers/Ajax/AjaxController.php index 171e9bd..0e6c9f6 100644 --- a/app/Controllers/Ajax/AjaxController.php +++ b/app/Controllers/Ajax/AjaxController.php @@ -10,7 +10,7 @@ use Psr\Log\LoggerInterface; abstract class AjaxController extends AbstractCRUDController { - private $_layout = 'front'; + private $_layout = "front"; protected $layouts = []; public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { @@ -21,23 +21,23 @@ abstract class AjaxController extends AbstractCRUDController protected function action_init_process(string $action, array $formDatas = []): void { parent::action_init_process($action, $formDatas); - $this->addViewDatas('layout', $this->layouts); - $this->addViewDatas('title', $this->getTitle()); - $this->addViewDatas('helper', $this->service->getHelper()); + $this->addViewDatas("layout", $this->layouts); + $this->addViewDatas("title", $this->getTitle()); + $this->addViewDatas("helper", $this->service->getHelper()); $this->service->getActionForm()->form_init_process($action, $formDatas); - $this->addViewDatas('formFields', $this->service->getActionForm()->getFormFields()); - $this->addViewDatas('formRules', $this->service->getActionForm()->getFormRules()); - $this->addViewDatas('formFilters', $this->service->getActionForm()->getFormFilters()); - $this->addViewDatas('formOptions', $this->service->getActionForm()->getFormOptions()); - $this->addViewDatas('index_actionButtons', $this->service->getActionForm()->getActionButtons()); - $this->addViewDatas('index_batchjobFields', $this->service->getActionForm()->getBatchjobFilters()); - $this->addViewDatas('index_batchjobButtons', $this->service->getActionForm()->getBatchjobButtons()); + $this->addViewDatas("formFields", $this->service->getActionForm()->getFormFields()); + $this->addViewDatas("formRules", $this->service->getActionForm()->getFormRules()); + $this->addViewDatas("formFilters", $this->service->getActionForm()->getFormFilters()); + $this->addViewDatas("formOptions", $this->service->getActionForm()->getFormOptions()); + $this->addViewDatas("index_actionButtons", $this->service->getActionForm()->getActionButtons()); + $this->addViewDatas("index_batchjobFields", $this->service->getActionForm()->getBatchjobFilters()); + $this->addViewDatas("index_batchjobButtons", $this->service->getActionForm()->getBatchjobButtons()); } protected function ok(array $data = [], int $status = 200): ResponseInterface { return $this->response->setStatusCode($status)->setJSON([ - 'ok' => true, + "ok" => true, ...$data, ]); } @@ -45,8 +45,8 @@ abstract class AjaxController extends AbstractCRUDController protected function fail(string $message, int $status = 400, array $extra = []): ResponseInterface { return $this->response->setStatusCode($status)->setJSON([ - 'ok' => false, - 'message' => $message, + "ok" => false, + "message" => $message, ...$extra, ]); } @@ -55,7 +55,7 @@ abstract class AjaxController extends AbstractCRUDController { // fetch + X-Requested-With 로 들어오는 경우 if (!$this->request->isAJAX()) { - return $this->fail('Invalid request', 400); + return $this->fail("Invalid request", 400); } return null; } @@ -65,55 +65,55 @@ abstract class AjaxController extends AbstractCRUDController if ($e instanceof FormValidationException) { // ✅ 필드별 + 전역 메시지 return $this->fail( - $e->getMessage() ?: '입력값을 확인해 주세요.', + $e->getMessage() ?: "입력값을 확인해 주세요.", 422, - ['errors' => $e->getErrors()] + ["errors" => $e->getErrors()] ); } - log_message('error', '[AJAX] ' . $e->getMessage()); + log_message("error", "[AJAX] " . $e->getMessage()); - return $this->fail('처리 중 오류가 발생했습니다.', 500); + return $this->fail("처리 중 오류가 발생했습니다.", 500); } public function create(): ResponseInterface { if (!$this->request->isAJAX()) { return $this->response->setStatusCode(400)->setJSON([ - 'ok' => false, - 'message' => static::class . '->' . __FUNCTION__ . "에서 오류발생: AJAX요청 형식이 아닙니다." + "ok" => false, + "message" => static::class . "->" . __FUNCTION__ . "에서 오류발생: AJAX요청 형식이 아닙니다." ]); } try { $formDatas = $this->request->getPost(); - // log_message('error', 'POST=' . json_encode($formDatas, JSON_UNESCAPED_UNICODE)); + // log_message("error", "POST=" . json_encode($formDatas, JSON_UNESCAPED_UNICODE)); $entity = $this->service->create($formDatas); return $this->response->setStatusCode(201)->setJSON([ - 'ok' => true, - 'message' => '문의가 접수되었습니다.', - 'data' => ['pk' => $entity->getPK()], + "ok" => true, + "message" => "문의가 접수되었습니다.", + "data" => ["pk" => $entity->getPK()], ]); } catch (FormValidationException $e) { - // log_message('error', 'CAUGHT FormValidationException: ' . print_r($e->getErrors(), true)); - return $this->response->setStatusCode(422)->setJSON([ - 'ok' => false, - 'message' => '입력값을 확인해 주세요.', - 'errors' => $e->getErrors(), - ]); - } catch (\Throwable $e) { + // log_message("error", "CAUGHT FormValidationException: " . print_r($e->getErrors(), true)); // ✅ 혹시 서비스에서 예외를 감싸버린 경우에도 에러를 최대한 복구 - $errors = service('validation')->getErrors(); + $errors = service("validation")->getErrors(); if (!empty($errors)) { - log_message('error', 'FALLBACK validation errors: ' . print_r($errors, true)); + log_message("error", "FALLBACK validation errors: " . print_r($errors, true)); return $this->response->setStatusCode(422)->setJSON([ - 'ok' => false, - 'message' => '입력값을 확인해 주세요.', - 'errors' => $errors, + "ok" => false, + "message" => "입력값을 확인해 주세요.", + "errors" => $errors, ]); } + return $this->response->setStatusCode(422)->setJSON([ + "ok" => false, + "message" => "입력값을 확인해 주세요.", + "errors" => $e->getErrors(), + ]); + } catch (\Throwable $e) { return $this->response->setStatusCode(500)->setJSON([ - 'ok' => false, - 'message' => '처리 중 오류가 발생했습니다.', + "ok" => false, + "message" => "처리 중 오류가 발생했습니다.\n" . $e->getMessage(), ]); } } diff --git a/app/Controllers/Auth/AuthController.php b/app/Controllers/Auth/AuthController.php index fb3aa5d..d1f5dd3 100644 --- a/app/Controllers/Auth/AuthController.php +++ b/app/Controllers/Auth/AuthController.php @@ -12,6 +12,7 @@ use Psr\Log\LoggerInterface; abstract class AuthController extends AbstractWebController { private $_layout = 'auth'; + protected $layouts = []; public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { parent::initController($request, $response, $logger); diff --git a/app/Libraries/AuthContext.php b/app/Libraries/AuthContext.php index 13efaf0..219a772 100644 --- a/app/Libraries/AuthContext.php +++ b/app/Libraries/AuthContext.php @@ -38,27 +38,27 @@ class AuthContext // Public Accessors (AuthService에서 이동) // ---------------------------------------------------- - public function getUID(): int + public function getUID(): int|null { return $this->getAuthInfo('uid'); } - public function getID(): string + public function getID(): string|null { return $this->getAuthInfo('id'); } - public function getName(): string + public function getName(): string|null { return $this->getAuthInfo('name'); } - public function getRole(): string + public function getRole(): string|null { return $this->getAuthInfo('role'); } - public function getRoles(): array + public function getRoles(): array|null { return explode(DEFAULTS['DELIMITER_COMMA'], $this->getRole()); }