chore: [env] .env.example 업데이트 및 .gitignore 정리

- .env.example을 SAM 프로젝트 실제 키 구조로 업데이트
- .gitignore에 !.env.example 예외 추가
- GCS_* 중복 키 제거, Gemini/Claude/Vertex 키 섹션 추가
This commit is contained in:
김보곤
2026-02-23 10:17:37 +09:00
parent 3ae3a1dcda
commit 240199af9d
51 changed files with 623 additions and 2726 deletions

View File

@@ -1,73 +0,0 @@
<?php
namespace App\Http\Controllers\Api\V1;
use App\Helpers\ApiResponse;
use App\Http\Controllers\Controller;
use App\Http\Requests\Barobill\BankServiceUrlRequest;
use App\Http\Requests\Barobill\BarobillLoginRequest;
use App\Http\Requests\Barobill\BarobillSignupRequest;
use App\Services\Barobill\BarobillSoapService;
class BarobillController extends Controller
{
public function __construct(
private BarobillSoapService $barobillSoapService
) {}
public function login(BarobillLoginRequest $request)
{
return ApiResponse::handle(
fn () => $this->barobillSoapService->registerLogin($request->validated()),
__('message.barobill.login_success')
);
}
public function signup(BarobillSignupRequest $request)
{
return ApiResponse::handle(
fn () => $this->barobillSoapService->registerSignup($request->validated()),
__('message.barobill.signup_success')
);
}
public function bankServiceUrl(BankServiceUrlRequest $request)
{
return ApiResponse::handle(
fn () => $this->barobillSoapService->getBankServiceRedirectUrl($request->validated()),
__('message.fetched')
);
}
public function status()
{
return ApiResponse::handle(
fn () => $this->barobillSoapService->getIntegrationStatus(),
__('message.fetched')
);
}
public function accountLinkUrl()
{
return ApiResponse::handle(
fn () => $this->barobillSoapService->getAccountLinkRedirectUrl(),
__('message.fetched')
);
}
public function cardLinkUrl()
{
return ApiResponse::handle(
fn () => $this->barobillSoapService->getCardLinkRedirectUrl(),
__('message.fetched')
);
}
public function certificateUrl()
{
return ApiResponse::handle(
fn () => $this->barobillSoapService->getCertificateRedirectUrl(),
__('message.fetched')
);
}
}

View File

@@ -1,97 +0,0 @@
<?php
namespace App\Http\Controllers\Api\V1;
use App\Helpers\ApiResponse;
use App\Http\Controllers\Controller;
use App\Http\Requests\V1\CorporateCard\StoreCorporateCardRequest;
use App\Http\Requests\V1\CorporateCard\UpdateCorporateCardRequest;
use App\Services\CorporateCardService;
use Illuminate\Http\Request;
class CorporateCardController extends Controller
{
public function __construct(
private readonly CorporateCardService $service
) {}
/**
* 법인카드 목록
*/
public function index(Request $request)
{
$params = $request->only([
'search',
'status',
'card_type',
'sort_by',
'sort_dir',
'per_page',
'page',
]);
$cards = $this->service->index($params);
return ApiResponse::success($cards, __('message.fetched'));
}
/**
* 법인카드 등록
*/
public function store(StoreCorporateCardRequest $request)
{
$card = $this->service->store($request->validated());
return ApiResponse::success($card, __('message.created'), [], 201);
}
/**
* 법인카드 상세
*/
public function show(int $id)
{
$card = $this->service->show($id);
return ApiResponse::success($card, __('message.fetched'));
}
/**
* 법인카드 수정
*/
public function update(int $id, UpdateCorporateCardRequest $request)
{
$card = $this->service->update($id, $request->validated());
return ApiResponse::success($card, __('message.updated'));
}
/**
* 법인카드 삭제
*/
public function destroy(int $id)
{
$this->service->destroy($id);
return ApiResponse::success(null, __('message.deleted'));
}
/**
* 법인카드 상태 토글 (사용/정지)
*/
public function toggle(int $id)
{
$card = $this->service->toggleStatus($id);
return ApiResponse::success($card, __('message.updated'));
}
/**
* 활성 법인카드 목록 (셀렉트박스용)
*/
public function active()
{
$cards = $this->service->getActiveCards();
return ApiResponse::success($cards, __('message.fetched'));
}
}

View File

@@ -4,30 +4,28 @@
use App\Helpers\ApiResponse;
use App\Http\Controllers\Controller;
use App\Http\Requests\Authz\RoleIndexRequest;
use App\Http\Requests\Authz\RoleStoreRequest;
use App\Http\Requests\Authz\RoleUpdateRequest;
use App\Services\Authz\RoleService;
use Illuminate\Http\Request;
class RoleController extends Controller
{
/**
* 역할 목록 조회
*/
public function index(RoleIndexRequest $request)
public function index(Request $request)
{
return ApiResponse::handle(function () use ($request) {
return RoleService::index($request->validated());
return RoleService::index($request->all());
}, __('message.fetched'));
}
/**
* 역할 생성
*/
public function store(RoleStoreRequest $request)
public function store(Request $request)
{
return ApiResponse::handle(function () use ($request) {
return RoleService::store($request->validated());
return RoleService::store($request->all());
}, __('message.created'));
}
@@ -44,10 +42,10 @@ public function show($id)
/**
* 역할 수정
*/
public function update(RoleUpdateRequest $request, $id)
public function update(Request $request, $id)
{
return ApiResponse::handle(function () use ($request, $id) {
return RoleService::update((int) $id, $request->validated());
return RoleService::update((int) $id, $request->all());
}, __('message.updated'));
}

View File

@@ -4,38 +4,37 @@
use App\Helpers\ApiResponse;
use App\Http\Controllers\Controller;
use App\Http\Requests\Authz\RolePermissionGrantRequest;
use App\Http\Requests\Authz\RolePermissionToggleRequest;
use App\Services\Authz\RolePermissionService;
use Illuminate\Http\Request;
class RolePermissionController extends Controller
{
public function index($id)
public function index($id, Request $request)
{
return ApiResponse::handle(function () use ($id) {
return RolePermissionService::list((int) $id);
}, __('message.fetched'));
}, '역할 퍼미션 목록 조회');
}
public function grant($id, RolePermissionGrantRequest $request)
public function grant($id, Request $request)
{
return ApiResponse::handle(function () use ($id, $request) {
return RolePermissionService::grant((int) $id, $request->validated());
}, __('message.updated'));
return RolePermissionService::grant((int) $id, $request->all());
}, '역할 퍼미션 부여');
}
public function revoke($id, RolePermissionGrantRequest $request)
public function revoke($id, Request $request)
{
return ApiResponse::handle(function () use ($id, $request) {
return RolePermissionService::revoke((int) $id, $request->validated());
}, __('message.updated'));
return RolePermissionService::revoke((int) $id, $request->all());
}, '역할 퍼미션 회수');
}
public function sync($id, RolePermissionGrantRequest $request)
public function sync($id, Request $request)
{
return ApiResponse::handle(function () use ($id, $request) {
return RolePermissionService::sync((int) $id, $request->validated());
}, __('message.updated'));
return RolePermissionService::sync((int) $id, $request->all());
}, '역할 퍼미션 동기화');
}
/**
@@ -61,10 +60,10 @@ public function matrix($id)
/**
* 특정 메뉴의 특정 권한 토글
*/
public function toggle($id, RolePermissionToggleRequest $request)
public function toggle($id, Request $request)
{
return ApiResponse::handle(function () use ($id, $request) {
return RolePermissionService::toggle((int) $id, $request->validated());
return RolePermissionService::toggle((int) $id, $request->all());
}, __('message.updated'));
}

View File

@@ -6,7 +6,6 @@
use App\Http\Controllers\Controller;
use App\Http\Requests\TaxInvoice\CancelTaxInvoiceRequest;
use App\Http\Requests\TaxInvoice\CreateTaxInvoiceRequest;
use App\Http\Requests\TaxInvoice\SaveSupplierSettingsRequest;
use App\Http\Requests\TaxInvoice\TaxInvoiceListRequest;
use App\Http\Requests\TaxInvoice\TaxInvoiceSummaryRequest;
use App\Http\Requests\TaxInvoice\UpdateTaxInvoiceRequest;
@@ -24,9 +23,11 @@ public function __construct(
*/
public function index(TaxInvoiceListRequest $request)
{
$taxInvoices = $this->taxInvoiceService->list($request->validated());
return ApiResponse::handle(
fn () => $this->taxInvoiceService->list($request->validated()),
__('message.fetched')
data: $taxInvoices,
message: __('message.fetched')
);
}
@@ -35,9 +36,11 @@ public function index(TaxInvoiceListRequest $request)
*/
public function show(int $id)
{
$taxInvoice = $this->taxInvoiceService->show($id);
return ApiResponse::handle(
fn () => $this->taxInvoiceService->show($id),
__('message.fetched')
data: $taxInvoice,
message: __('message.fetched')
);
}
@@ -46,9 +49,12 @@ public function show(int $id)
*/
public function store(CreateTaxInvoiceRequest $request)
{
$taxInvoice = $this->taxInvoiceService->create($request->validated());
return ApiResponse::handle(
fn () => $this->taxInvoiceService->create($request->validated()),
__('message.created')
data: $taxInvoice,
message: __('message.created'),
status: 201
);
}
@@ -57,9 +63,11 @@ public function store(CreateTaxInvoiceRequest $request)
*/
public function update(UpdateTaxInvoiceRequest $request, int $id)
{
$taxInvoice = $this->taxInvoiceService->update($id, $request->validated());
return ApiResponse::handle(
fn () => $this->taxInvoiceService->update($id, $request->validated()),
__('message.updated')
data: $taxInvoice,
message: __('message.updated')
);
}
@@ -68,9 +76,11 @@ public function update(UpdateTaxInvoiceRequest $request, int $id)
*/
public function destroy(int $id)
{
$this->taxInvoiceService->delete($id);
return ApiResponse::handle(
fn () => $this->taxInvoiceService->delete($id),
__('message.deleted')
data: null,
message: __('message.deleted')
);
}
@@ -79,9 +89,11 @@ public function destroy(int $id)
*/
public function issue(int $id)
{
$taxInvoice = $this->taxInvoiceService->issue($id);
return ApiResponse::handle(
fn () => $this->taxInvoiceService->issue($id),
__('message.tax_invoice.issued')
data: $taxInvoice,
message: __('message.tax_invoice.issued')
);
}
@@ -90,9 +102,11 @@ public function issue(int $id)
*/
public function bulkIssue(BulkIssueRequest $request)
{
$result = $this->taxInvoiceService->bulkIssue($request->getIds());
return ApiResponse::handle(
fn () => $this->taxInvoiceService->bulkIssue($request->getIds()),
__('message.tax_invoice.bulk_issued')
data: $result,
message: __('message.tax_invoice.bulk_issued')
);
}
@@ -101,9 +115,11 @@ public function bulkIssue(BulkIssueRequest $request)
*/
public function cancel(CancelTaxInvoiceRequest $request, int $id)
{
$taxInvoice = $this->taxInvoiceService->cancel($id, $request->validated()['reason']);
return ApiResponse::handle(
fn () => $this->taxInvoiceService->cancel($id, $request->validated()['reason']),
__('message.tax_invoice.cancelled')
data: $taxInvoice,
message: __('message.tax_invoice.cancelled')
);
}
@@ -112,9 +128,11 @@ public function cancel(CancelTaxInvoiceRequest $request, int $id)
*/
public function checkStatus(int $id)
{
$taxInvoice = $this->taxInvoiceService->checkStatus($id);
return ApiResponse::handle(
fn () => $this->taxInvoiceService->checkStatus($id),
__('message.fetched')
data: $taxInvoice,
message: __('message.fetched')
);
}
@@ -123,42 +141,11 @@ public function checkStatus(int $id)
*/
public function summary(TaxInvoiceSummaryRequest $request)
{
return ApiResponse::handle(
fn () => $this->taxInvoiceService->summary($request->validated()),
__('message.fetched')
);
}
$summary = $this->taxInvoiceService->summary($request->validated());
/**
* 공급자 설정 조회
*/
public function supplierSettings()
{
return ApiResponse::handle(
fn () => $this->taxInvoiceService->getSupplierSettings(),
__('message.fetched')
);
}
/**
* 공급자 설정 저장
*/
public function saveSupplierSettings(SaveSupplierSettingsRequest $request)
{
return ApiResponse::handle(
fn () => $this->taxInvoiceService->saveSupplierSettings($request->validated()),
__('message.updated')
);
}
/**
* 세금계산서 생성 + 즉시 발행
*/
public function storeAndIssue(CreateTaxInvoiceRequest $request)
{
return ApiResponse::handle(
fn () => $this->taxInvoiceService->createAndIssue($request->validated()),
__('message.tax_invoice.issued')
data: $summary,
message: __('message.fetched')
);
}
}

View File

@@ -4,8 +4,8 @@
use App\Helpers\ApiResponse;
use App\Http\Controllers\Controller;
use App\Http\Requests\Authz\UserRoleGrantRequest;
use App\Services\Authz\UserRoleService;
use Illuminate\Http\Request;
class UserRoleController extends Controller
{
@@ -13,27 +13,27 @@ public function index($id)
{
return ApiResponse::handle(function () use ($id) {
return UserRoleService::list((int) $id);
}, __('message.fetched'));
}, '사용자의 역할 목록 조회');
}
public function grant($id, UserRoleGrantRequest $request)
public function grant($id, Request $request)
{
return ApiResponse::handle(function () use ($id, $request) {
return UserRoleService::grant((int) $id, $request->validated());
}, __('message.updated'));
return UserRoleService::grant((int) $id, $request->all());
}, '사용자에게 역할 부여');
}
public function revoke($id, UserRoleGrantRequest $request)
public function revoke($id, Request $request)
{
return ApiResponse::handle(function () use ($id, $request) {
return UserRoleService::revoke((int) $id, $request->validated());
}, __('message.updated'));
return UserRoleService::revoke((int) $id, $request->all());
}, '사용자의 역할 회수');
}
public function sync($id, UserRoleGrantRequest $request)
public function sync($id, Request $request)
{
return ApiResponse::handle(function () use ($id, $request) {
return UserRoleService::sync((int) $id, $request->validated());
}, __('message.updated'));
return UserRoleService::sync((int) $id, $request->all());
}, '사용자의 역할 동기화');
}
}