From 214adc8de19aba29a91d3b0cba014f5df8878bbf Mon Sep 17 00:00:00 2001 From: kent Date: Sat, 26 Jul 2025 14:25:45 +0900 Subject: [PATCH] =?UTF-8?q?fix=20:=20Trait=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?=EB=B0=8F=20query=20=EB=94=94=EB=B2=84=EA=B9=85=20=EC=86=8C?= =?UTF-8?q?=EC=8A=A4=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Helpers/ApiResponse.php | 5 +++-- app/Http/Middleware/ApiKeyMiddleware.php | 12 ++++++++++-- app/Models/Tenant.php | 3 ++- app/Providers/AppServiceProvider.php | 10 ++++++++++ app/Services/ProductService.php | 4 ++-- app/Traits/ModelTrait.php | 24 ++++++++++++++++++++++++ 6 files changed, 51 insertions(+), 7 deletions(-) create mode 100644 app/Traits/ModelTrait.php diff --git a/app/Helpers/ApiResponse.php b/app/Helpers/ApiResponse.php index 8f300d9..616f480 100644 --- a/app/Helpers/ApiResponse.php +++ b/app/Helpers/ApiResponse.php @@ -77,9 +77,10 @@ public static function validate( return $condition ? null : self::error($message, $code, $extra); } - public static function response($type = '', $query = '', $debug = false, $key = ''): array + public static function response($type = '', $query = '', $key = ''): array { - if ($debug && $type != 'success') DB::enableQueryLog(); // 쿼리 추적 + if (app()->environment('local')) $debug = true; + if ($debug) DB::enableQueryLog(); // 쿼리 추적 $result = match ($type) { 'get' => $key ? $query->get()->keyBy($key) : $query->get(), diff --git a/app/Http/Middleware/ApiKeyMiddleware.php b/app/Http/Middleware/ApiKeyMiddleware.php index cfea678..4511f1d 100644 --- a/app/Http/Middleware/ApiKeyMiddleware.php +++ b/app/Http/Middleware/ApiKeyMiddleware.php @@ -48,8 +48,16 @@ public function handle(Request $request, Closure $next) $user = $accessToken->tokenable; if ($user) { - $request->attributes->set('tenant_id', $user->tn_num); - $request->attributes->set('api_user', $user->mb_num); + // 기본 테넌트(여러개 소속시 우선순위) + $tenantId = $user->tenant?->tenant_id ?? $user->userTenants->first()?->tenant_id; + + $request->attributes->set('tenant_id', $tenantId); + $request->attributes->set('api_user', $user->id); + + + // ApiKeyMiddleware 등에서 + app()->instance('api_user', $user->id); + app()->instance('tenant_id', $tenantId); } } } diff --git a/app/Models/Tenant.php b/app/Models/Tenant.php index fe7e18f..67e8b22 100644 --- a/app/Models/Tenant.php +++ b/app/Models/Tenant.php @@ -4,10 +4,11 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; +use App\Traits\ModelTrait; class Tenant extends Model { - use SoftDeletes; + use SoftDeletes, ModelTrait; protected $fillable = [ 'name', diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 452e6b6..f3911ca 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -2,6 +2,7 @@ namespace App\Providers; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider @@ -20,5 +21,14 @@ public function register(): void public function boot(): void { // + Builder::macro('debug', function($debug = null) { + if (is_null($debug) && app()->environment('local')) { + $debug = true; + } + if ($debug) { + \DB::enableQueryLog(); + } + return $this; + }); } } diff --git a/app/Services/ProductService.php b/app/Services/ProductService.php index 03602c8..3a3aa73 100644 --- a/app/Services/ProductService.php +++ b/app/Services/ProductService.php @@ -11,11 +11,11 @@ class ProductService /** * 회원 조회(리스트) */ - public static function getCategory(string $userToken, bool $debug = false) + public static function getCategory() { $query = CommonCode::where('code_group','category')->where('parent_id',null); - return ApiResponse::response('get', $query, true); + return ApiResponse::response('get', $query); } diff --git a/app/Traits/ModelTrait.php b/app/Traits/ModelTrait.php new file mode 100644 index 0000000..55ee57f --- /dev/null +++ b/app/Traits/ModelTrait.php @@ -0,0 +1,24 @@ +format('Y-m-d H:i:s'); + } + + /** + * Active 상태 조회 + */ + public function scopeActive($query) + { + return $query->where('is_active', 1); + } +}