From 189b38c93699a13141668e0d7d599f49072aa5e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B6=8C=ED=98=81=EC=84=B1?= Date: Thu, 29 Jan 2026 15:33:54 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20Auditable=20=ED=8A=B8=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=ED=8A=B8=20=EA=B5=AC=ED=98=84=20=EB=B0=8F=2097=EA=B0=9C=20?= =?UTF-8?q?=EB=AA=A8=EB=8D=B8=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Auditable 트레이트 신규 생성 (bootAuditable 패턴) - creating: created_by/updated_by 자동 채우기 - updating: updated_by 자동 채우기 - deleting: deleted_by 채우기 + saveQuietly() - created/updated/deleted: audit_logs 자동 기록 - 기존 AuditLogger 패턴과 동일한 try/catch 조용한 실패 - 변경된 필드만 before/after 기록 (updated 이벤트) - auditExclude 프로퍼티로 모델별 제외 필드 설정 가능 - 제외 대상: Attendance, StockTransaction, TodayIssue 등 고빈도/시스템 모델 Co-Authored-By: Claude Opus 4.5 --- app/Models/BadDebts/BadDebt.php | 3 +- app/Models/Bidding/Bidding.php | 3 +- app/Models/CategoryGroup.php | 3 +- app/Models/Commons/Category.php | 3 +- app/Models/Commons/CategoryField.php | 3 +- app/Models/Commons/CategoryLog.php | 3 +- app/Models/Commons/CategoryTemplate.php | 3 +- app/Models/Commons/Classification.php | 3 +- app/Models/Commons/Menu.php | 3 +- app/Models/Construction/Contract.php | 3 +- app/Models/Construction/HandoverReport.php | 3 +- .../Construction/HandoverReportItem.php | 3 +- .../Construction/HandoverReportManager.php | 3 +- app/Models/Construction/StructureReview.php | 3 +- app/Models/Documents/Document.php | 3 +- app/Models/Estimate/Estimate.php | 3 +- app/Models/Estimate/EstimateItem.php | 3 +- app/Models/ItemMaster/CustomTab.php | 3 +- app/Models/ItemMaster/EntityRelationship.php | 3 +- app/Models/ItemMaster/ItemBomItem.php | 3 +- app/Models/ItemMaster/ItemField.php | 3 +- app/Models/ItemMaster/ItemPage.php | 3 +- app/Models/ItemMaster/ItemSection.php | 3 +- app/Models/ItemMaster/TabColumn.php | 3 +- app/Models/ItemMaster/UnitOption.php | 3 +- app/Models/Items/Item.php | 3 +- app/Models/Items/ItemReceipt.php | 3 +- app/Models/Labor.php | 3 +- app/Models/Materials/Material.php | 3 +- app/Models/Members/UserRole.php | 3 +- app/Models/Members/UserTenant.php | 3 +- app/Models/NotificationSetting.php | 3 +- app/Models/NotificationSettingGroup.php | 3 +- app/Models/NotificationSettingGroupState.php | 3 +- app/Models/Orders/Client.php | 3 +- app/Models/Orders/ClientGroup.php | 3 +- app/Models/Orders/Order.php | 3 +- app/Models/Orders/OrderItem.php | 3 +- app/Models/Permissions/Role.php | 3 +- app/Models/Popups/Popup.php | 3 +- app/Models/Process.php | 3 +- app/Models/Production/WorkOrder.php | 3 +- app/Models/Production/WorkOrderAssignee.php | 3 +- .../Production/WorkOrderBendingDetail.php | 3 +- app/Models/Production/WorkOrderIssue.php | 3 +- app/Models/Production/WorkOrderItem.php | 3 +- app/Models/Production/WorkResult.php | 3 +- app/Models/Products/CommonCode.php | 3 +- app/Models/Products/Price.php | 3 +- app/Models/Products/PriceRevision.php | 3 +- app/Models/Products/Product.php | 3 +- app/Models/Products/ProductComponent.php | 3 +- app/Models/PushDeviceToken.php | 3 +- app/Models/PushNotificationSetting.php | 3 +- app/Models/Qualitys/Inspection.php | 3 +- app/Models/Quote/Quote.php | 3 +- app/Models/Quote/QuoteFormula.php | 3 +- app/Models/Quote/QuoteFormulaCategory.php | 3 +- app/Models/Quote/QuoteItem.php | 3 +- app/Models/Quote/QuoteRevision.php | 3 +- app/Models/Tenants/Approval.php | 3 +- app/Models/Tenants/ApprovalForm.php | 3 +- app/Models/Tenants/ApprovalLine.php | 3 +- app/Models/Tenants/BankAccount.php | 3 +- app/Models/Tenants/Bill.php | 3 +- app/Models/Tenants/BillInstallment.php | 3 + app/Models/Tenants/Card.php | 3 +- app/Models/Tenants/Department.php | 3 +- app/Models/Tenants/Deposit.php | 3 +- app/Models/Tenants/ExpectedExpense.php | 3 +- app/Models/Tenants/ExpenseAccount.php | 3 +- app/Models/Tenants/Leave.php | 3 +- app/Models/Tenants/LeaveBalance.php | 3 +- app/Models/Tenants/LeaveGrant.php | 3 +- app/Models/Tenants/LeavePolicy.php | 3 +- app/Models/Tenants/Loan.php | 3 +- app/Models/Tenants/Payment.php | 3 +- app/Models/Tenants/Payroll.php | 3 +- app/Models/Tenants/Plan.php | 3 +- app/Models/Tenants/Position.php | 3 +- app/Models/Tenants/Purchase.php | 3 +- app/Models/Tenants/Receiving.php | 3 +- app/Models/Tenants/Salary.php | 3 +- app/Models/Tenants/Sale.php | 3 +- app/Models/Tenants/Schedule.php | 4 +- app/Models/Tenants/Shipment.php | 3 +- app/Models/Tenants/ShipmentItem.php | 3 +- app/Models/Tenants/Site.php | 3 +- app/Models/Tenants/SiteBriefing.php | 3 +- app/Models/Tenants/Stock.php | 3 +- app/Models/Tenants/StockLot.php | 3 +- app/Models/Tenants/Subscription.php | 3 +- app/Models/Tenants/TaxInvoice.php | 3 +- app/Models/Tenants/TenantUserProfile.php | 3 +- app/Models/Tenants/Withdrawal.php | 3 +- app/Models/UserInvitation.php | 3 +- app/Traits/Auditable.php | 124 ++++++++++++++++++ 97 files changed, 317 insertions(+), 96 deletions(-) create mode 100644 app/Traits/Auditable.php diff --git a/app/Models/BadDebts/BadDebt.php b/app/Models/BadDebts/BadDebt.php index a811897..5a51977 100644 --- a/app/Models/BadDebts/BadDebt.php +++ b/app/Models/BadDebts/BadDebt.php @@ -4,6 +4,7 @@ use App\Models\Members\User; use App\Models\Orders\Client; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -12,7 +13,7 @@ class BadDebt extends Model { - use BelongsToTenant, SoftDeletes; + use Auditable, BelongsToTenant, SoftDeletes; protected $fillable = [ 'tenant_id', diff --git a/app/Models/Bidding/Bidding.php b/app/Models/Bidding/Bidding.php index c8d68f7..23d8760 100644 --- a/app/Models/Bidding/Bidding.php +++ b/app/Models/Bidding/Bidding.php @@ -5,6 +5,7 @@ use App\Models\Members\User; use App\Models\Orders\Client; use App\Models\Quote\Quote; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; @@ -13,7 +14,7 @@ class Bidding extends Model { - use BelongsToTenant, HasFactory, SoftDeletes; + use Auditable, BelongsToTenant, HasFactory, SoftDeletes; protected $fillable = [ 'tenant_id', diff --git a/app/Models/CategoryGroup.php b/app/Models/CategoryGroup.php index e7b6acd..86772a4 100644 --- a/app/Models/CategoryGroup.php +++ b/app/Models/CategoryGroup.php @@ -3,6 +3,7 @@ namespace App\Models; use App\Models\Tenants\Tenant; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -15,7 +16,7 @@ */ class CategoryGroup extends Model { - use BelongsToTenant; + use Auditable, BelongsToTenant; protected $table = 'category_groups'; diff --git a/app/Models/Commons/Category.php b/app/Models/Commons/Category.php index aad2f61..695a410 100644 --- a/app/Models/Commons/Category.php +++ b/app/Models/Commons/Category.php @@ -2,6 +2,7 @@ namespace App\Models\Commons; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -9,7 +10,7 @@ class Category extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $fillable = [ 'tenant_id', 'parent_id', 'code_group', 'code', 'name', diff --git a/app/Models/Commons/CategoryField.php b/app/Models/Commons/CategoryField.php index 7b92073..2e4a4e9 100644 --- a/app/Models/Commons/CategoryField.php +++ b/app/Models/Commons/CategoryField.php @@ -2,6 +2,7 @@ namespace App\Models\Commons; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -9,7 +10,7 @@ class CategoryField extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $table = 'category_fields'; diff --git a/app/Models/Commons/CategoryLog.php b/app/Models/Commons/CategoryLog.php index ddacf0c..293ccdf 100644 --- a/app/Models/Commons/CategoryLog.php +++ b/app/Models/Commons/CategoryLog.php @@ -2,13 +2,14 @@ namespace App\Models\Commons; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; class CategoryLog extends Model { - use BelongsToTenant, ModelTrait; + use Auditable, BelongsToTenant, ModelTrait; protected $table = 'category_logs'; diff --git a/app/Models/Commons/CategoryTemplate.php b/app/Models/Commons/CategoryTemplate.php index edf6d9b..e0f46f7 100644 --- a/app/Models/Commons/CategoryTemplate.php +++ b/app/Models/Commons/CategoryTemplate.php @@ -2,13 +2,14 @@ namespace App\Models\Commons; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; class CategoryTemplate extends Model { - use BelongsToTenant, ModelTrait; + use Auditable, BelongsToTenant, ModelTrait; protected $table = 'category_templates'; diff --git a/app/Models/Commons/Classification.php b/app/Models/Commons/Classification.php index 205c500..5ce2ced 100644 --- a/app/Models/Commons/Classification.php +++ b/app/Models/Commons/Classification.php @@ -2,6 +2,7 @@ namespace App\Models\Commons; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -9,7 +10,7 @@ class Classification extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $fillable = [ 'tenant_id', diff --git a/app/Models/Commons/Menu.php b/app/Models/Commons/Menu.php index 4dc5afd..76289d5 100644 --- a/app/Models/Commons/Menu.php +++ b/app/Models/Commons/Menu.php @@ -3,6 +3,7 @@ namespace App\Models\Commons; use App\Models\Scopes\TenantScope; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -15,7 +16,7 @@ */ class Menu extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $fillable = [ 'tenant_id', 'parent_id', 'global_menu_id', 'name', 'url', 'is_active', 'sort_order', diff --git a/app/Models/Construction/Contract.php b/app/Models/Construction/Contract.php index 04d55cf..1416b6b 100644 --- a/app/Models/Construction/Contract.php +++ b/app/Models/Construction/Contract.php @@ -3,6 +3,7 @@ namespace App\Models\Construction; use App\Models\Members\User; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -42,7 +43,7 @@ */ class Contract extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $table = 'contracts'; diff --git a/app/Models/Construction/HandoverReport.php b/app/Models/Construction/HandoverReport.php index 47f05dd..be0be71 100644 --- a/app/Models/Construction/HandoverReport.php +++ b/app/Models/Construction/HandoverReport.php @@ -3,6 +3,7 @@ namespace App\Models\Construction; use App\Models\Members\User; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -49,7 +50,7 @@ */ class HandoverReport extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $table = 'handover_reports'; diff --git a/app/Models/Construction/HandoverReportItem.php b/app/Models/Construction/HandoverReportItem.php index cdcb5aa..19ca992 100644 --- a/app/Models/Construction/HandoverReportItem.php +++ b/app/Models/Construction/HandoverReportItem.php @@ -3,6 +3,7 @@ namespace App\Models\Construction; use App\Models\Members\User; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -25,7 +26,7 @@ */ class HandoverReportItem extends Model { - use BelongsToTenant; + use Auditable, BelongsToTenant; protected $table = 'handover_report_items'; diff --git a/app/Models/Construction/HandoverReportManager.php b/app/Models/Construction/HandoverReportManager.php index 42ae25c..5dd1873 100644 --- a/app/Models/Construction/HandoverReportManager.php +++ b/app/Models/Construction/HandoverReportManager.php @@ -3,6 +3,7 @@ namespace App\Models\Construction; use App\Models\Members\User; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -24,7 +25,7 @@ */ class HandoverReportManager extends Model { - use BelongsToTenant; + use Auditable, BelongsToTenant; protected $table = 'handover_report_managers'; diff --git a/app/Models/Construction/StructureReview.php b/app/Models/Construction/StructureReview.php index 21efe2c..1dbee0d 100644 --- a/app/Models/Construction/StructureReview.php +++ b/app/Models/Construction/StructureReview.php @@ -4,6 +4,7 @@ use App\Models\Members\User; use App\Models\Site; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -38,7 +39,7 @@ */ class StructureReview extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $table = 'structure_reviews'; diff --git a/app/Models/Documents/Document.php b/app/Models/Documents/Document.php index 8823054..6f3b2c2 100644 --- a/app/Models/Documents/Document.php +++ b/app/Models/Documents/Document.php @@ -3,6 +3,7 @@ namespace App\Models\Documents; use App\Models\Members\User; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -32,7 +33,7 @@ */ class Document extends Model { - use BelongsToTenant, SoftDeletes; + use Auditable, BelongsToTenant, SoftDeletes; protected $table = 'documents'; diff --git a/app/Models/Estimate/Estimate.php b/app/Models/Estimate/Estimate.php index e41beb4..11257e3 100644 --- a/app/Models/Estimate/Estimate.php +++ b/app/Models/Estimate/Estimate.php @@ -3,6 +3,7 @@ namespace App\Models\Estimate; use App\Models\Commons\Category; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; @@ -12,7 +13,7 @@ class Estimate extends Model { - use BelongsToTenant, HasFactory, SoftDeletes; + use Auditable, BelongsToTenant, HasFactory, SoftDeletes; protected $fillable = [ 'tenant_id', diff --git a/app/Models/Estimate/EstimateItem.php b/app/Models/Estimate/EstimateItem.php index 032fbea..2c6fdd3 100644 --- a/app/Models/Estimate/EstimateItem.php +++ b/app/Models/Estimate/EstimateItem.php @@ -2,6 +2,7 @@ namespace App\Models\Estimate; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; @@ -10,7 +11,7 @@ class EstimateItem extends Model { - use BelongsToTenant, HasFactory, SoftDeletes; + use Auditable, BelongsToTenant, HasFactory, SoftDeletes; protected $fillable = [ 'tenant_id', diff --git a/app/Models/ItemMaster/CustomTab.php b/app/Models/ItemMaster/CustomTab.php index fd9d3b4..f3926cf 100644 --- a/app/Models/ItemMaster/CustomTab.php +++ b/app/Models/ItemMaster/CustomTab.php @@ -2,6 +2,7 @@ namespace App\Models\ItemMaster; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -9,7 +10,7 @@ class CustomTab extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $fillable = [ 'tenant_id', diff --git a/app/Models/ItemMaster/EntityRelationship.php b/app/Models/ItemMaster/EntityRelationship.php index 25c4371..04a1252 100644 --- a/app/Models/ItemMaster/EntityRelationship.php +++ b/app/Models/ItemMaster/EntityRelationship.php @@ -2,6 +2,7 @@ namespace App\Models\ItemMaster; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -17,7 +18,7 @@ */ class EntityRelationship extends Model { - use BelongsToTenant, ModelTrait; + use Auditable, BelongsToTenant, ModelTrait; protected $fillable = [ 'tenant_id', diff --git a/app/Models/ItemMaster/ItemBomItem.php b/app/Models/ItemMaster/ItemBomItem.php index 789c003..91faa81 100644 --- a/app/Models/ItemMaster/ItemBomItem.php +++ b/app/Models/ItemMaster/ItemBomItem.php @@ -2,6 +2,7 @@ namespace App\Models\ItemMaster; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -9,7 +10,7 @@ class ItemBomItem extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $fillable = [ 'tenant_id', diff --git a/app/Models/ItemMaster/ItemField.php b/app/Models/ItemMaster/ItemField.php index a262415..8d3ffe4 100644 --- a/app/Models/ItemMaster/ItemField.php +++ b/app/Models/ItemMaster/ItemField.php @@ -2,6 +2,7 @@ namespace App\Models\ItemMaster; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -9,7 +10,7 @@ class ItemField extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $fillable = [ 'tenant_id', diff --git a/app/Models/ItemMaster/ItemPage.php b/app/Models/ItemMaster/ItemPage.php index aeaf7e0..e6023f0 100644 --- a/app/Models/ItemMaster/ItemPage.php +++ b/app/Models/ItemMaster/ItemPage.php @@ -2,6 +2,7 @@ namespace App\Models\ItemMaster; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -9,7 +10,7 @@ class ItemPage extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $fillable = [ 'tenant_id', diff --git a/app/Models/ItemMaster/ItemSection.php b/app/Models/ItemMaster/ItemSection.php index af9f260..1b84d55 100644 --- a/app/Models/ItemMaster/ItemSection.php +++ b/app/Models/ItemMaster/ItemSection.php @@ -2,6 +2,7 @@ namespace App\Models\ItemMaster; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -9,7 +10,7 @@ class ItemSection extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $fillable = [ 'tenant_id', diff --git a/app/Models/ItemMaster/TabColumn.php b/app/Models/ItemMaster/TabColumn.php index 68bde18..932ae5b 100644 --- a/app/Models/ItemMaster/TabColumn.php +++ b/app/Models/ItemMaster/TabColumn.php @@ -2,13 +2,14 @@ namespace App\Models\ItemMaster; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; class TabColumn extends Model { - use BelongsToTenant, ModelTrait; + use Auditable, BelongsToTenant, ModelTrait; protected $fillable = [ 'tenant_id', diff --git a/app/Models/ItemMaster/UnitOption.php b/app/Models/ItemMaster/UnitOption.php index bd73b73..1f542e0 100644 --- a/app/Models/ItemMaster/UnitOption.php +++ b/app/Models/ItemMaster/UnitOption.php @@ -2,6 +2,7 @@ namespace App\Models\ItemMaster; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -9,7 +10,7 @@ class UnitOption extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $fillable = [ 'tenant_id', diff --git a/app/Models/Items/Item.php b/app/Models/Items/Item.php index fa09dcc..97329f0 100644 --- a/app/Models/Items/Item.php +++ b/app/Models/Items/Item.php @@ -5,6 +5,7 @@ use App\Models\Commons\Category; use App\Models\Commons\File; use App\Models\Commons\Tag; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -18,7 +19,7 @@ */ class Item extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $fillable = [ 'tenant_id', diff --git a/app/Models/Items/ItemReceipt.php b/app/Models/Items/ItemReceipt.php index ae2a225..1030cb5 100644 --- a/app/Models/Items/ItemReceipt.php +++ b/app/Models/Items/ItemReceipt.php @@ -3,6 +3,7 @@ namespace App\Models\Items; use App\Models\Members\User; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; @@ -30,7 +31,7 @@ */ class ItemReceipt extends Model { - use BelongsToTenant, SoftDeletes; + use Auditable, BelongsToTenant, SoftDeletes; protected $table = 'item_receipts'; diff --git a/app/Models/Labor.php b/app/Models/Labor.php index 676c639..162df33 100644 --- a/app/Models/Labor.php +++ b/app/Models/Labor.php @@ -2,6 +2,7 @@ namespace App\Models; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -9,7 +10,7 @@ class Labor extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $table = 'labors'; diff --git a/app/Models/Materials/Material.php b/app/Models/Materials/Material.php index 9eb7bbb..afc1fc1 100644 --- a/app/Models/Materials/Material.php +++ b/app/Models/Materials/Material.php @@ -6,6 +6,7 @@ use App\Models\Commons\File; use App\Models\Commons\Tag; use App\Models\Qualitys\Lot; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -16,7 +17,7 @@ */ class Material extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $fillable = [ 'tenant_id', diff --git a/app/Models/Members/UserRole.php b/app/Models/Members/UserRole.php index 8a3c401..492e7ad 100644 --- a/app/Models/Members/UserRole.php +++ b/app/Models/Members/UserRole.php @@ -4,6 +4,7 @@ use App\Models\Permissions\Role; use App\Models\Tenants\Tenant; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; @@ -13,7 +14,7 @@ */ class UserRole extends Model { - use BelongsToTenant, SoftDeletes; + use Auditable, BelongsToTenant, SoftDeletes; protected $fillable = [ 'user_id', 'tenant_id', 'role_id', 'assigned_at', diff --git a/app/Models/Members/UserTenant.php b/app/Models/Members/UserTenant.php index d8a01e6..3e37934 100644 --- a/app/Models/Members/UserTenant.php +++ b/app/Models/Members/UserTenant.php @@ -3,6 +3,7 @@ namespace App\Models\Members; use App\Models\Tenants\Tenant; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -13,7 +14,7 @@ */ class UserTenant extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $fillable = [ 'user_id', 'tenant_id', 'is_active', 'is_default', 'joined_at', 'left_at', diff --git a/app/Models/NotificationSetting.php b/app/Models/NotificationSetting.php index bed7dc6..327c4f1 100644 --- a/app/Models/NotificationSetting.php +++ b/app/Models/NotificationSetting.php @@ -2,13 +2,14 @@ namespace App\Models; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; class NotificationSetting extends Model { - use BelongsToTenant; + use Auditable, BelongsToTenant; protected $fillable = [ 'tenant_id', diff --git a/app/Models/NotificationSettingGroup.php b/app/Models/NotificationSettingGroup.php index a2ae4b0..a62c589 100644 --- a/app/Models/NotificationSettingGroup.php +++ b/app/Models/NotificationSettingGroup.php @@ -2,6 +2,7 @@ namespace App\Models; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -9,7 +10,7 @@ class NotificationSettingGroup extends Model { - use BelongsToTenant; + use Auditable, BelongsToTenant; protected $fillable = [ 'tenant_id', diff --git a/app/Models/NotificationSettingGroupState.php b/app/Models/NotificationSettingGroupState.php index a780f98..be54650 100644 --- a/app/Models/NotificationSettingGroupState.php +++ b/app/Models/NotificationSettingGroupState.php @@ -2,13 +2,14 @@ namespace App\Models; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; class NotificationSettingGroupState extends Model { - use BelongsToTenant; + use Auditable, BelongsToTenant; protected $fillable = [ 'tenant_id', diff --git a/app/Models/Orders/Client.php b/app/Models/Orders/Client.php index bd9bea2..7cf878b 100644 --- a/app/Models/Orders/Client.php +++ b/app/Models/Orders/Client.php @@ -3,6 +3,7 @@ namespace App\Models\Orders; use App\Models\BadDebts\BadDebt; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -10,7 +11,7 @@ class Client extends Model { - use BelongsToTenant, ModelTrait; + use Auditable, BelongsToTenant, ModelTrait; protected $fillable = [ 'tenant_id', diff --git a/app/Models/Orders/ClientGroup.php b/app/Models/Orders/ClientGroup.php index 48162b4..d354df7 100644 --- a/app/Models/Orders/ClientGroup.php +++ b/app/Models/Orders/ClientGroup.php @@ -2,6 +2,7 @@ namespace App\Models\Orders; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -9,7 +10,7 @@ class ClientGroup extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $fillable = [ 'tenant_id', diff --git a/app/Models/Orders/Order.php b/app/Models/Orders/Order.php index eedeb89..434c834 100644 --- a/app/Models/Orders/Order.php +++ b/app/Models/Orders/Order.php @@ -8,6 +8,7 @@ use App\Models\Quote\Quote; use App\Models\Tenants\Sale; use App\Models\Tenants\Shipment; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -21,7 +22,7 @@ */ class Order extends Model { - use BelongsToTenant, SoftDeletes; + use Auditable, BelongsToTenant, SoftDeletes; // 상태 코드 public const STATUS_DRAFT = 'DRAFT'; diff --git a/app/Models/Orders/OrderItem.php b/app/Models/Orders/OrderItem.php index 3b72bfe..11932e7 100644 --- a/app/Models/Orders/OrderItem.php +++ b/app/Models/Orders/OrderItem.php @@ -5,6 +5,7 @@ use App\Models\Items\Item; use App\Models\Quote\Quote; use App\Models\Quote\QuoteItem; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -18,7 +19,7 @@ */ class OrderItem extends Model { - use BelongsToTenant, SoftDeletes; + use Auditable, BelongsToTenant, SoftDeletes; protected $table = 'order_items'; diff --git a/app/Models/Permissions/Role.php b/app/Models/Permissions/Role.php index 5828a4b..cb529e4 100644 --- a/app/Models/Permissions/Role.php +++ b/app/Models/Permissions/Role.php @@ -6,6 +6,7 @@ use App\Models\Members\User; use App\Models\Members\UserRole; use App\Models\Tenants\Tenant; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; @@ -15,7 +16,7 @@ */ class Role extends Model { - use BelongsToTenant, SoftDeletes; + use Auditable, BelongsToTenant, SoftDeletes; protected $fillable = [ 'tenant_id', diff --git a/app/Models/Popups/Popup.php b/app/Models/Popups/Popup.php index c3a427e..ba6fe06 100644 --- a/app/Models/Popups/Popup.php +++ b/app/Models/Popups/Popup.php @@ -4,6 +4,7 @@ use App\Models\Members\User; use App\Models\Tenants\Department; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; @@ -12,7 +13,7 @@ class Popup extends Model { - use BelongsToTenant, SoftDeletes; + use Auditable, BelongsToTenant, SoftDeletes; protected $fillable = [ 'tenant_id', diff --git a/app/Models/Process.php b/app/Models/Process.php index cb769d2..49ad213 100644 --- a/app/Models/Process.php +++ b/app/Models/Process.php @@ -2,6 +2,7 @@ namespace App\Models; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Factories\HasFactory; @@ -12,7 +13,7 @@ class Process extends Model { - use BelongsToTenant; + use Auditable, BelongsToTenant; use HasFactory; use ModelTrait; use SoftDeletes; diff --git a/app/Models/Production/WorkOrder.php b/app/Models/Production/WorkOrder.php index 2d224f6..b4ec0b9 100644 --- a/app/Models/Production/WorkOrder.php +++ b/app/Models/Production/WorkOrder.php @@ -7,6 +7,7 @@ use App\Models\Process; use App\Models\Tenants\Department; use App\Models\Tenants\Shipment; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -22,7 +23,7 @@ */ class WorkOrder extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $table = 'work_orders'; diff --git a/app/Models/Production/WorkOrderAssignee.php b/app/Models/Production/WorkOrderAssignee.php index b9429a2..267ed25 100644 --- a/app/Models/Production/WorkOrderAssignee.php +++ b/app/Models/Production/WorkOrderAssignee.php @@ -3,6 +3,7 @@ namespace App\Models\Production; use App\Models\Members\User; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -15,7 +16,7 @@ */ class WorkOrderAssignee extends Model { - use BelongsToTenant, ModelTrait; + use Auditable, BelongsToTenant, ModelTrait; protected $table = 'work_order_assignees'; diff --git a/app/Models/Production/WorkOrderBendingDetail.php b/app/Models/Production/WorkOrderBendingDetail.php index 733fea4..50ae644 100644 --- a/app/Models/Production/WorkOrderBendingDetail.php +++ b/app/Models/Production/WorkOrderBendingDetail.php @@ -2,6 +2,7 @@ namespace App\Models\Production; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -13,7 +14,7 @@ */ class WorkOrderBendingDetail extends Model { - use BelongsToTenant; + use Auditable, BelongsToTenant; protected $table = 'work_order_bending_details'; diff --git a/app/Models/Production/WorkOrderIssue.php b/app/Models/Production/WorkOrderIssue.php index bc3de57..37855c3 100644 --- a/app/Models/Production/WorkOrderIssue.php +++ b/app/Models/Production/WorkOrderIssue.php @@ -3,6 +3,7 @@ namespace App\Models\Production; use App\Models\Members\User; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -14,7 +15,7 @@ */ class WorkOrderIssue extends Model { - use BelongsToTenant; + use Auditable, BelongsToTenant; protected $table = 'work_order_issues'; diff --git a/app/Models/Production/WorkOrderItem.php b/app/Models/Production/WorkOrderItem.php index 095cdac..f59d99b 100644 --- a/app/Models/Production/WorkOrderItem.php +++ b/app/Models/Production/WorkOrderItem.php @@ -3,6 +3,7 @@ namespace App\Models\Production; use App\Models\Items\Item; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -12,7 +13,7 @@ */ class WorkOrderItem extends Model { - use BelongsToTenant; + use Auditable, BelongsToTenant; protected $table = 'work_order_items'; diff --git a/app/Models/Production/WorkResult.php b/app/Models/Production/WorkResult.php index 42d1483..9a80e68 100644 --- a/app/Models/Production/WorkResult.php +++ b/app/Models/Production/WorkResult.php @@ -3,6 +3,7 @@ namespace App\Models\Production; use App\Models\Members\User; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -16,7 +17,7 @@ */ class WorkResult extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $table = 'work_results'; diff --git a/app/Models/Products/CommonCode.php b/app/Models/Products/CommonCode.php index fedb3ba..36dc1c1 100644 --- a/app/Models/Products/CommonCode.php +++ b/app/Models/Products/CommonCode.php @@ -2,6 +2,7 @@ namespace App\Models\Products; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -12,7 +13,7 @@ */ class CommonCode extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $table = 'common_codes'; diff --git a/app/Models/Products/Price.php b/app/Models/Products/Price.php index 5f45f29..13ef9f4 100644 --- a/app/Models/Products/Price.php +++ b/app/Models/Products/Price.php @@ -3,6 +3,7 @@ namespace App\Models\Products; use App\Models\Orders\ClientGroup; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -12,7 +13,7 @@ class Price extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $table = 'prices'; diff --git a/app/Models/Products/PriceRevision.php b/app/Models/Products/PriceRevision.php index 6740cf7..fd4a7c8 100644 --- a/app/Models/Products/PriceRevision.php +++ b/app/Models/Products/PriceRevision.php @@ -3,13 +3,14 @@ namespace App\Models\Products; use App\Models\User; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; class PriceRevision extends Model { - use BelongsToTenant; + use Auditable, BelongsToTenant; protected $table = 'price_revisions'; diff --git a/app/Models/Products/Product.php b/app/Models/Products/Product.php index 718fe46..a0b11c6 100644 --- a/app/Models/Products/Product.php +++ b/app/Models/Products/Product.php @@ -5,6 +5,7 @@ use App\Models\Commons\Category; use App\Models\Commons\File; use App\Models\Commons\Tag; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -12,7 +13,7 @@ class Product extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $fillable = [ 'tenant_id', 'code', 'name', 'unit', 'category_id', diff --git a/app/Models/Products/ProductComponent.php b/app/Models/Products/ProductComponent.php index f6f6fd1..4d0603c 100644 --- a/app/Models/Products/ProductComponent.php +++ b/app/Models/Products/ProductComponent.php @@ -3,6 +3,7 @@ namespace App\Models\Products; use App\Models\Materials\Material; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -10,7 +11,7 @@ class ProductComponent extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $table = 'product_components'; diff --git a/app/Models/PushDeviceToken.php b/app/Models/PushDeviceToken.php index b4a1ff6..8c043e3 100644 --- a/app/Models/PushDeviceToken.php +++ b/app/Models/PushDeviceToken.php @@ -2,6 +2,7 @@ namespace App\Models; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -9,7 +10,7 @@ class PushDeviceToken extends Model { - use BelongsToTenant; + use Auditable, BelongsToTenant; use SoftDeletes; protected $fillable = [ diff --git a/app/Models/PushNotificationSetting.php b/app/Models/PushNotificationSetting.php index 6cbf0df..a91ed12 100644 --- a/app/Models/PushNotificationSetting.php +++ b/app/Models/PushNotificationSetting.php @@ -2,13 +2,14 @@ namespace App\Models; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; class PushNotificationSetting extends Model { - use BelongsToTenant; + use Auditable, BelongsToTenant; protected $fillable = [ 'tenant_id', diff --git a/app/Models/Qualitys/Inspection.php b/app/Models/Qualitys/Inspection.php index 7ac6545..f6453b3 100644 --- a/app/Models/Qualitys/Inspection.php +++ b/app/Models/Qualitys/Inspection.php @@ -4,6 +4,7 @@ use App\Models\Items\Item; use App\Models\Members\User; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Model; @@ -32,7 +33,7 @@ */ class Inspection extends Model { - use BelongsToTenant, SoftDeletes; + use Auditable, BelongsToTenant, SoftDeletes; protected $table = 'inspections'; diff --git a/app/Models/Quote/Quote.php b/app/Models/Quote/Quote.php index 82cc1fb..7953a7d 100644 --- a/app/Models/Quote/Quote.php +++ b/app/Models/Quote/Quote.php @@ -7,6 +7,7 @@ use App\Models\Orders\Client; use App\Models\Orders\Order; use App\Models\Tenants\SiteBriefing; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; @@ -16,7 +17,7 @@ class Quote extends Model { - use BelongsToTenant, HasFactory, SoftDeletes; + use Auditable, BelongsToTenant, HasFactory, SoftDeletes; protected $fillable = [ 'tenant_id', diff --git a/app/Models/Quote/QuoteFormula.php b/app/Models/Quote/QuoteFormula.php index 2a59611..81bfa08 100644 --- a/app/Models/Quote/QuoteFormula.php +++ b/app/Models/Quote/QuoteFormula.php @@ -3,6 +3,7 @@ namespace App\Models\Quote; use App\Models\User; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Builder; @@ -29,7 +30,7 @@ */ class QuoteFormula extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $table = 'quote_formulas'; diff --git a/app/Models/Quote/QuoteFormulaCategory.php b/app/Models/Quote/QuoteFormulaCategory.php index 33eed53..310de6c 100644 --- a/app/Models/Quote/QuoteFormulaCategory.php +++ b/app/Models/Quote/QuoteFormulaCategory.php @@ -3,6 +3,7 @@ namespace App\Models\Quote; use App\Models\User; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Builder; @@ -26,7 +27,7 @@ */ class QuoteFormulaCategory extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $table = 'quote_formula_categories'; diff --git a/app/Models/Quote/QuoteItem.php b/app/Models/Quote/QuoteItem.php index 8bf11b9..f95be0a 100644 --- a/app/Models/Quote/QuoteItem.php +++ b/app/Models/Quote/QuoteItem.php @@ -2,6 +2,7 @@ namespace App\Models\Quote; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; @@ -9,7 +10,7 @@ class QuoteItem extends Model { - use BelongsToTenant, HasFactory; + use Auditable, BelongsToTenant, HasFactory; protected $fillable = [ 'quote_id', diff --git a/app/Models/Quote/QuoteRevision.php b/app/Models/Quote/QuoteRevision.php index 988fbc3..9761f85 100644 --- a/app/Models/Quote/QuoteRevision.php +++ b/app/Models/Quote/QuoteRevision.php @@ -3,6 +3,7 @@ namespace App\Models\Quote; use App\Models\Members\User; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; @@ -10,7 +11,7 @@ class QuoteRevision extends Model { - use BelongsToTenant, HasFactory; + use Auditable, BelongsToTenant, HasFactory; const UPDATED_AT = null; diff --git a/app/Models/Tenants/Approval.php b/app/Models/Tenants/Approval.php index f4e1edb..9ecc871 100644 --- a/app/Models/Tenants/Approval.php +++ b/app/Models/Tenants/Approval.php @@ -3,6 +3,7 @@ namespace App\Models\Tenants; use App\Models\Members\User; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -30,7 +31,7 @@ */ class Approval extends Model { - use BelongsToTenant, SoftDeletes; + use Auditable, BelongsToTenant, SoftDeletes; protected $table = 'approvals'; diff --git a/app/Models/Tenants/ApprovalForm.php b/app/Models/Tenants/ApprovalForm.php index 5158788..f013df7 100644 --- a/app/Models/Tenants/ApprovalForm.php +++ b/app/Models/Tenants/ApprovalForm.php @@ -3,6 +3,7 @@ namespace App\Models\Tenants; use App\Models\Members\User; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -25,7 +26,7 @@ */ class ApprovalForm extends Model { - use BelongsToTenant, SoftDeletes; + use Auditable, BelongsToTenant, SoftDeletes; protected $table = 'approval_forms'; diff --git a/app/Models/Tenants/ApprovalLine.php b/app/Models/Tenants/ApprovalLine.php index e156205..41f9d1f 100644 --- a/app/Models/Tenants/ApprovalLine.php +++ b/app/Models/Tenants/ApprovalLine.php @@ -3,6 +3,7 @@ namespace App\Models\Tenants; use App\Models\Members\User; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -22,7 +23,7 @@ */ class ApprovalLine extends Model { - use BelongsToTenant, SoftDeletes; + use Auditable, BelongsToTenant, SoftDeletes; protected $table = 'approval_lines'; diff --git a/app/Models/Tenants/BankAccount.php b/app/Models/Tenants/BankAccount.php index 5a686d9..416663d 100644 --- a/app/Models/Tenants/BankAccount.php +++ b/app/Models/Tenants/BankAccount.php @@ -3,6 +3,7 @@ namespace App\Models\Tenants; use App\Models\Members\User; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -28,7 +29,7 @@ */ class BankAccount extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $table = 'bank_accounts'; diff --git a/app/Models/Tenants/Bill.php b/app/Models/Tenants/Bill.php index 878984f..1200fa7 100644 --- a/app/Models/Tenants/Bill.php +++ b/app/Models/Tenants/Bill.php @@ -2,6 +2,7 @@ namespace App\Models\Tenants; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -10,7 +11,7 @@ class Bill extends Model { - use BelongsToTenant, SoftDeletes; + use Auditable, BelongsToTenant, SoftDeletes; protected $fillable = [ 'tenant_id', diff --git a/app/Models/Tenants/BillInstallment.php b/app/Models/Tenants/BillInstallment.php index 40d119c..41656e2 100644 --- a/app/Models/Tenants/BillInstallment.php +++ b/app/Models/Tenants/BillInstallment.php @@ -2,11 +2,14 @@ namespace App\Models\Tenants; +use App\Traits\Auditable; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; class BillInstallment extends Model { + use Auditable; + protected $fillable = [ 'bill_id', 'installment_date', diff --git a/app/Models/Tenants/Card.php b/app/Models/Tenants/Card.php index 46c9c6f..eb1eaf7 100644 --- a/app/Models/Tenants/Card.php +++ b/app/Models/Tenants/Card.php @@ -3,6 +3,7 @@ namespace App\Models\Tenants; use App\Models\Members\User; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -29,7 +30,7 @@ */ class Card extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $table = 'cards'; diff --git a/app/Models/Tenants/Department.php b/app/Models/Tenants/Department.php index 6e3ecba..91eee01 100644 --- a/app/Models/Tenants/Department.php +++ b/app/Models/Tenants/Department.php @@ -5,6 +5,7 @@ use App\Models\Members\User; use App\Models\Permissions\PermissionOverride; use App\Models\Tenants\Pivots\DepartmentUser; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -16,7 +17,7 @@ class Department extends Model { - use BelongsToTenant, HasRoles, ModelTrait, SoftDeletes; // 부서도 권한/역할을 가짐 + use Auditable, BelongsToTenant, HasRoles, ModelTrait, SoftDeletes; // 부서도 권한/역할을 가짐 protected $table = 'departments'; diff --git a/app/Models/Tenants/Deposit.php b/app/Models/Tenants/Deposit.php index 6f62790..610f1fe 100644 --- a/app/Models/Tenants/Deposit.php +++ b/app/Models/Tenants/Deposit.php @@ -2,6 +2,7 @@ namespace App\Models\Tenants; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -9,7 +10,7 @@ class Deposit extends Model { - use BelongsToTenant, SoftDeletes; + use Auditable, BelongsToTenant, SoftDeletes; protected $fillable = [ 'tenant_id', diff --git a/app/Models/Tenants/ExpectedExpense.php b/app/Models/Tenants/ExpectedExpense.php index 0600839..2f48512 100644 --- a/app/Models/Tenants/ExpectedExpense.php +++ b/app/Models/Tenants/ExpectedExpense.php @@ -2,6 +2,7 @@ namespace App\Models\Tenants; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; @@ -11,7 +12,7 @@ class ExpectedExpense extends Model { - use BelongsToTenant, SoftDeletes; + use Auditable, BelongsToTenant, SoftDeletes; protected $fillable = [ 'tenant_id', diff --git a/app/Models/Tenants/ExpenseAccount.php b/app/Models/Tenants/ExpenseAccount.php index 1895412..b57c677 100644 --- a/app/Models/Tenants/ExpenseAccount.php +++ b/app/Models/Tenants/ExpenseAccount.php @@ -3,6 +3,7 @@ namespace App\Models\Tenants; use App\Models\Orders\Client; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Factories\HasFactory; @@ -17,7 +18,7 @@ */ class ExpenseAccount extends Model { - use BelongsToTenant, HasFactory, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, HasFactory, ModelTrait, SoftDeletes; protected $table = 'expense_accounts'; diff --git a/app/Models/Tenants/Leave.php b/app/Models/Tenants/Leave.php index 44cb75e..dc5a9af 100644 --- a/app/Models/Tenants/Leave.php +++ b/app/Models/Tenants/Leave.php @@ -3,6 +3,7 @@ namespace App\Models\Tenants; use App\Models\Members\User; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -30,7 +31,7 @@ */ class Leave extends Model { - use BelongsToTenant, SoftDeletes; + use Auditable, BelongsToTenant, SoftDeletes; protected $table = 'leaves'; diff --git a/app/Models/Tenants/LeaveBalance.php b/app/Models/Tenants/LeaveBalance.php index f26ac15..ec276c0 100644 --- a/app/Models/Tenants/LeaveBalance.php +++ b/app/Models/Tenants/LeaveBalance.php @@ -3,6 +3,7 @@ namespace App\Models\Tenants; use App\Models\Members\User; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -20,7 +21,7 @@ */ class LeaveBalance extends Model { - use BelongsToTenant; + use Auditable, BelongsToTenant; protected $table = 'leave_balances'; diff --git a/app/Models/Tenants/LeaveGrant.php b/app/Models/Tenants/LeaveGrant.php index 25abff0..f2dfa59 100644 --- a/app/Models/Tenants/LeaveGrant.php +++ b/app/Models/Tenants/LeaveGrant.php @@ -3,6 +3,7 @@ namespace App\Models\Tenants; use App\Models\Members\User; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -24,7 +25,7 @@ */ class LeaveGrant extends Model { - use BelongsToTenant, SoftDeletes; + use Auditable, BelongsToTenant, SoftDeletes; protected $table = 'leave_grants'; diff --git a/app/Models/Tenants/LeavePolicy.php b/app/Models/Tenants/LeavePolicy.php index f65f48d..e61998b 100644 --- a/app/Models/Tenants/LeavePolicy.php +++ b/app/Models/Tenants/LeavePolicy.php @@ -2,6 +2,7 @@ namespace App\Models\Tenants; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -25,7 +26,7 @@ */ class LeavePolicy extends Model { - use BelongsToTenant; + use Auditable, BelongsToTenant; protected $table = 'leave_policies'; diff --git a/app/Models/Tenants/Loan.php b/app/Models/Tenants/Loan.php index 80b403e..542a3ad 100644 --- a/app/Models/Tenants/Loan.php +++ b/app/Models/Tenants/Loan.php @@ -2,6 +2,7 @@ namespace App\Models\Tenants; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Factories\HasFactory; @@ -11,7 +12,7 @@ class Loan extends Model { - use BelongsToTenant, HasFactory, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, HasFactory, ModelTrait, SoftDeletes; // ========================================================================= // 상수 정의 diff --git a/app/Models/Tenants/Payment.php b/app/Models/Tenants/Payment.php index 1bbe7b9..86d1e87 100644 --- a/app/Models/Tenants/Payment.php +++ b/app/Models/Tenants/Payment.php @@ -2,6 +2,7 @@ namespace App\Models\Tenants; +use App\Traits\Auditable; use Carbon\Carbon; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; @@ -24,7 +25,7 @@ */ class Payment extends Model { - use SoftDeletes; + use Auditable, SoftDeletes; // ========================================================================= // 상수 정의 diff --git a/app/Models/Tenants/Payroll.php b/app/Models/Tenants/Payroll.php index 2805f60..da12f95 100644 --- a/app/Models/Tenants/Payroll.php +++ b/app/Models/Tenants/Payroll.php @@ -3,6 +3,7 @@ namespace App\Models\Tenants; use App\Models\Members\User; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -41,7 +42,7 @@ */ class Payroll extends Model { - use BelongsToTenant, SoftDeletes; + use Auditable, BelongsToTenant, SoftDeletes; protected $table = 'payrolls'; diff --git a/app/Models/Tenants/Plan.php b/app/Models/Tenants/Plan.php index 8f587e9..bb0589e 100644 --- a/app/Models/Tenants/Plan.php +++ b/app/Models/Tenants/Plan.php @@ -2,6 +2,7 @@ namespace App\Models\Tenants; +use App\Traits\Auditable; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; @@ -23,7 +24,7 @@ */ class Plan extends Model { - use SoftDeletes; + use Auditable, SoftDeletes; // ========================================================================= // 상수 정의 diff --git a/app/Models/Tenants/Position.php b/app/Models/Tenants/Position.php index b9bdbd9..b81b305 100644 --- a/app/Models/Tenants/Position.php +++ b/app/Models/Tenants/Position.php @@ -2,6 +2,7 @@ namespace App\Models\Tenants; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -20,7 +21,7 @@ */ class Position extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $table = 'positions'; diff --git a/app/Models/Tenants/Purchase.php b/app/Models/Tenants/Purchase.php index 7d26e2e..320ffe0 100644 --- a/app/Models/Tenants/Purchase.php +++ b/app/Models/Tenants/Purchase.php @@ -2,6 +2,7 @@ namespace App\Models\Tenants; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -9,7 +10,7 @@ class Purchase extends Model { - use BelongsToTenant, SoftDeletes; + use Auditable, BelongsToTenant, SoftDeletes; protected $fillable = [ 'tenant_id', diff --git a/app/Models/Tenants/Receiving.php b/app/Models/Tenants/Receiving.php index e370ba1..e81a97a 100644 --- a/app/Models/Tenants/Receiving.php +++ b/app/Models/Tenants/Receiving.php @@ -2,6 +2,7 @@ namespace App\Models\Tenants; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -9,7 +10,7 @@ class Receiving extends Model { - use BelongsToTenant, SoftDeletes; + use Auditable, BelongsToTenant, SoftDeletes; protected $fillable = [ 'tenant_id', diff --git a/app/Models/Tenants/Salary.php b/app/Models/Tenants/Salary.php index 4352ec5..b1ec22d 100644 --- a/app/Models/Tenants/Salary.php +++ b/app/Models/Tenants/Salary.php @@ -3,6 +3,7 @@ namespace App\Models\Tenants; use App\Models\Members\User; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -34,7 +35,7 @@ */ class Salary extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $table = 'salaries'; diff --git a/app/Models/Tenants/Sale.php b/app/Models/Tenants/Sale.php index aa9577f..ac1ecd3 100644 --- a/app/Models/Tenants/Sale.php +++ b/app/Models/Tenants/Sale.php @@ -3,6 +3,7 @@ namespace App\Models\Tenants; use App\Models\Orders\Order; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -10,7 +11,7 @@ class Sale extends Model { - use BelongsToTenant, SoftDeletes; + use Auditable, BelongsToTenant, SoftDeletes; /** * 매출 생성 시점 상수 diff --git a/app/Models/Tenants/Schedule.php b/app/Models/Tenants/Schedule.php index 4cd9cc3..60eb371 100644 --- a/app/Models/Tenants/Schedule.php +++ b/app/Models/Tenants/Schedule.php @@ -3,7 +3,7 @@ namespace App\Models\Tenants; use App\Models\Members\User; -use Illuminate\Database\Eloquent\Builder; +use App\Traits\Auditable; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; @@ -16,7 +16,7 @@ */ class Schedule extends Model { - use SoftDeletes; + use Auditable, SoftDeletes; protected $table = 'schedules'; diff --git a/app/Models/Tenants/Shipment.php b/app/Models/Tenants/Shipment.php index 3bb9d3e..a02db8c 100644 --- a/app/Models/Tenants/Shipment.php +++ b/app/Models/Tenants/Shipment.php @@ -5,6 +5,7 @@ use App\Models\Orders\Order; use App\Models\Production\WorkOrder; use App\Models\Products\CommonCode; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -13,7 +14,7 @@ class Shipment extends Model { - use BelongsToTenant, SoftDeletes; + use Auditable, BelongsToTenant, SoftDeletes; protected $fillable = [ 'tenant_id', diff --git a/app/Models/Tenants/ShipmentItem.php b/app/Models/Tenants/ShipmentItem.php index 37a8c91..88d7eb8 100644 --- a/app/Models/Tenants/ShipmentItem.php +++ b/app/Models/Tenants/ShipmentItem.php @@ -2,6 +2,7 @@ namespace App\Models\Tenants; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -9,7 +10,7 @@ class ShipmentItem extends Model { - use BelongsToTenant, SoftDeletes; + use Auditable, BelongsToTenant, SoftDeletes; protected $fillable = [ 'tenant_id', diff --git a/app/Models/Tenants/Site.php b/app/Models/Tenants/Site.php index 7c175be..14f9ed0 100644 --- a/app/Models/Tenants/Site.php +++ b/app/Models/Tenants/Site.php @@ -4,6 +4,7 @@ use App\Models\Members\User; use App\Models\Orders\Client; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -30,7 +31,7 @@ */ class Site extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $table = 'sites'; diff --git a/app/Models/Tenants/SiteBriefing.php b/app/Models/Tenants/SiteBriefing.php index 187cc3e..68d2abf 100644 --- a/app/Models/Tenants/SiteBriefing.php +++ b/app/Models/Tenants/SiteBriefing.php @@ -5,6 +5,7 @@ use App\Models\Members\User; use App\Models\Orders\Client; use App\Models\Quote\Quote; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use App\Traits\ModelTrait; use Illuminate\Database\Eloquent\Model; @@ -45,7 +46,7 @@ */ class SiteBriefing extends Model { - use BelongsToTenant, ModelTrait, SoftDeletes; + use Auditable, BelongsToTenant, ModelTrait, SoftDeletes; protected $table = 'site_briefings'; diff --git a/app/Models/Tenants/Stock.php b/app/Models/Tenants/Stock.php index 0326499..0b73407 100644 --- a/app/Models/Tenants/Stock.php +++ b/app/Models/Tenants/Stock.php @@ -2,6 +2,7 @@ namespace App\Models\Tenants; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -10,7 +11,7 @@ class Stock extends Model { - use BelongsToTenant, SoftDeletes; + use Auditable, BelongsToTenant, SoftDeletes; protected $fillable = [ 'tenant_id', diff --git a/app/Models/Tenants/StockLot.php b/app/Models/Tenants/StockLot.php index f0c854e..7bd28e9 100644 --- a/app/Models/Tenants/StockLot.php +++ b/app/Models/Tenants/StockLot.php @@ -2,6 +2,7 @@ namespace App\Models\Tenants; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -9,7 +10,7 @@ class StockLot extends Model { - use BelongsToTenant, SoftDeletes; + use Auditable, BelongsToTenant, SoftDeletes; protected $fillable = [ 'tenant_id', diff --git a/app/Models/Tenants/Subscription.php b/app/Models/Tenants/Subscription.php index f826633..ad15a61 100644 --- a/app/Models/Tenants/Subscription.php +++ b/app/Models/Tenants/Subscription.php @@ -2,6 +2,7 @@ namespace App\Models\Tenants; +use App\Traits\Auditable; use Carbon\Carbon; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; @@ -25,7 +26,7 @@ */ class Subscription extends Model { - use SoftDeletes; + use Auditable, SoftDeletes; // ========================================================================= // 상수 정의 diff --git a/app/Models/Tenants/TaxInvoice.php b/app/Models/Tenants/TaxInvoice.php index 3f2ce19..95862e6 100644 --- a/app/Models/Tenants/TaxInvoice.php +++ b/app/Models/Tenants/TaxInvoice.php @@ -2,6 +2,7 @@ namespace App\Models\Tenants; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -10,7 +11,7 @@ class TaxInvoice extends Model { - use BelongsToTenant, SoftDeletes; + use Auditable, BelongsToTenant, SoftDeletes; // ========================================================================= // 상수 정의 diff --git a/app/Models/Tenants/TenantUserProfile.php b/app/Models/Tenants/TenantUserProfile.php index ab9368a..1cf15a4 100644 --- a/app/Models/Tenants/TenantUserProfile.php +++ b/app/Models/Tenants/TenantUserProfile.php @@ -3,7 +3,7 @@ namespace App\Models\Tenants; use App\Models\Members\User; -use Illuminate\Database\Eloquent\Model; +use App\Traits\Auditable; use Illuminate\Database\Eloquent\Relations\BelongsTo; /** @@ -20,6 +20,7 @@ */ class TenantUserProfile extends Model { + use Auditable; protected $casts = [ 'json_extra' => 'array', ]; diff --git a/app/Models/Tenants/Withdrawal.php b/app/Models/Tenants/Withdrawal.php index 082ef1a..ded2143 100644 --- a/app/Models/Tenants/Withdrawal.php +++ b/app/Models/Tenants/Withdrawal.php @@ -2,6 +2,7 @@ namespace App\Models\Tenants; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -9,7 +10,7 @@ class Withdrawal extends Model { - use BelongsToTenant, SoftDeletes; + use Auditable, BelongsToTenant, SoftDeletes; protected $fillable = [ 'tenant_id', diff --git a/app/Models/UserInvitation.php b/app/Models/UserInvitation.php index 799f802..195919e 100644 --- a/app/Models/UserInvitation.php +++ b/app/Models/UserInvitation.php @@ -5,6 +5,7 @@ use App\Models\Members\User; use App\Models\Permissions\Role; use App\Models\Tenants\Tenant; +use App\Traits\Auditable; use App\Traits\BelongsToTenant; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -12,7 +13,7 @@ class UserInvitation extends Model { - use BelongsToTenant; + use Auditable, BelongsToTenant; // 상태 상수 public const STATUS_PENDING = 'pending'; diff --git a/app/Traits/Auditable.php b/app/Traits/Auditable.php new file mode 100644 index 0000000..5f14cd8 --- /dev/null +++ b/app/Traits/Auditable.php @@ -0,0 +1,124 @@ +isFillable('created_by') && ! $model->created_by) { + $model->created_by = $actorId; + } + if ($model->isFillable('updated_by') && ! $model->updated_by) { + $model->updated_by = $actorId; + } + } + }); + + static::updating(function ($model) { + $actorId = static::resolveActorId(); + if ($actorId && $model->isFillable('updated_by')) { + $model->updated_by = $actorId; + } + }); + + static::deleting(function ($model) { + $actorId = static::resolveActorId(); + if ($actorId && $model->isFillable('deleted_by')) { + $model->deleted_by = $actorId; + $model->saveQuietly(); + } + }); + + static::created(function ($model) { + $model->logAuditEvent('created', null, $model->toAuditSnapshot()); + }); + + static::updated(function ($model) { + $dirty = $model->getChanges(); + $excluded = $model->getAuditExcludedFields(); + $changed = array_diff_key($dirty, array_flip($excluded)); + + if (empty($changed)) { + return; + } + + $before = []; + $after = []; + foreach ($changed as $key => $value) { + $before[$key] = $model->getOriginal($key); + $after[$key] = $value; + } + + $model->logAuditEvent('updated', $before, $after); + }); + + static::deleted(function ($model) { + $model->logAuditEvent('deleted', $model->toAuditSnapshot(), null); + }); + } + + public function getAuditExcludedFields(): array + { + $defaults = [ + 'created_at', 'updated_at', 'deleted_at', + 'created_by', 'updated_by', 'deleted_by', + ]; + + $custom = property_exists($this, 'auditExclude') ? $this->auditExclude : []; + + return array_merge($defaults, $custom); + } + + public function getAuditTargetType(): string + { + $className = class_basename(static::class); + + return Str::snake($className); + } + + protected function toAuditSnapshot(): array + { + $excluded = $this->getAuditExcludedFields(); + + return array_diff_key($this->attributesToArray(), array_flip($excluded)); + } + + protected function logAuditEvent(string $action, ?array $before, ?array $after): void + { + try { + $tenantId = $this->tenant_id ?? null; + if (! $tenantId) { + return; + } + + $request = request(); + + AuditLog::create([ + 'tenant_id' => $tenantId, + 'target_type' => $this->getAuditTargetType(), + 'target_id' => $this->getKey(), + 'action' => $action, + 'before' => $before, + 'after' => $after, + 'actor_id' => static::resolveActorId(), + 'ip' => $request?->ip(), + 'ua' => $request?->userAgent(), + 'created_at' => now(), + ]); + } catch (\Throwable $e) { + // 감사 로그 실패는 업무 흐름을 방해하지 않음 + } + } + + protected static function resolveActorId(): ?int + { + return auth()->id(); + } +}