주요 변경사항: - Spatie Laravel Permission 패키지 설치 (v6.23.0) - admin 프로젝트에서 필수 Traits 및 Scopes 복사 - ModelTrait, BelongsToTenant, HasTenantFilter, UppercaseAttributes - TenantScope - Tenant 모델 관계 수정 (hasMany → belongsToMany via user_tenants) - Tenant 모델 null 처리 추가 (status_label, created_at) - Laravel 12 bootstrap/app.php에 API 라우트 등록 - API 라우트 미들웨어 수정 (auth:sanctum → web,auth) - HTMX 라이브러리 및 CSRF 토큰 헤더 추가 ViewServiceProvider 수정: - 전역 View Composer의 $tenants 변수를 $globalTenants로 변경 - 페이지별 페이지네이션된 $tenants 변수와의 충돌 방지 - tenant-selector.blade.php에서 $globalTenants 사용 버그 수정: - Collection::hasPages() 오류 해결 (ViewComposer 변수 덮어쓰기 문제) - 테넌트 목록 무한 로딩 스피너 해결 - 500 Internal Server Error 해결
31 lines
821 B
PHP
31 lines
821 B
PHP
<?php
|
|
|
|
namespace App\Traits;
|
|
|
|
use App\Helpers\TenantHelper;
|
|
use Illuminate\Database\Eloquent\Builder;
|
|
|
|
trait HasTenantFilter
|
|
{
|
|
public static function getEloquentQuery(): Builder
|
|
{
|
|
return parent::getEloquentQuery()
|
|
->when(TenantHelper::hasTenantSelected(), function (Builder $query) {
|
|
return TenantHelper::applyTenantFilter($query);
|
|
}, function (Builder $query) {
|
|
// 테넌트가 선택되지 않으면 빈 결과
|
|
return $query->whereRaw('1 = 0');
|
|
});
|
|
}
|
|
|
|
protected function mutateFormDataBeforeCreate(array $data): array
|
|
{
|
|
return TenantHelper::setTenantId($data);
|
|
}
|
|
|
|
protected function mutateFormDataBeforeSave(array $data): array
|
|
{
|
|
return TenantHelper::setTenantId($data);
|
|
}
|
|
}
|